【问题标题】:Websocket messages after handshake握手后的Websocket消息
【发布时间】:2015-06-19 10:15:44
【问题描述】:

我在我的服务器上用 C++ 进行了 websocket 通信。我对 websocket 协议有疑问。当我收到文本格式的握手消息时,我做出握手响应并以文本格式发回并打开连接,但是当我将第二条消息发送回浏览器时,连接失败。 但是,如果我在第一条消息的框架中加入握手答案,那么以后一切正常,我对其他消息没有问题。

Mozzila firefox:与 ws://localhost/ 的连接在页面加载时中断。 Google chrome:与“ws://localhost/”的 WebSocket 连接失败:服务器不得屏蔽它发送给客户端的任何帧。

我不遮盖任何帧。

这适用于 Mozzila firefox 和 google chrome,但不适用于 safari。 那么,有人知道问题出在哪里吗?有人遇到过这个问题吗?

谢谢

【问题讨论】:

    标签: c++ websocket frame handshake


    【解决方案1】:

    您说您没有屏蔽任何帧(从服务器到客户端),在您发回的数据中,请检查第二个字节的第一位。

    根据RFC6445,在向客户端发送数据时,第二个字节的第一位(掩码标志)必须设置为 0。如果您的帧设置不正确并且该位设置为 1,则浏览器将抱怨“服务器不得屏蔽它发送给客户端的任何帧”

    这也可能与您无关,但请检查您在代码的升级/握手部分中没有任何尾随数据,在处理 Web 套接字时,尾随 chr(0)(空字符)会导致问题稍后当我尝试发送客户端数据时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多