2015-06-19 95 views
0

我在我的服务器上用C++进行了websocket通信。我有一个websocket协议的问题。当我以文本格式获得握手消息时,我进行握手响应并以文本格式发回并打开连接,但是当我向浏览器发回第二条消息时,连接失败。 但是,如果我在第一条消息的框架中握手回答,以后一切正常,我没有其他消息的问题。握手后的Websocket消息

Mozzila firefox:连接到ws:// localhost /在加载页面时被中断。 谷歌浏览器:与'ws:// localhost /'的WebSocket连接失败:服务器不能屏蔽它发送给客户端的任何帧。

我不掩饰任何框架。

这适用于Mozzila firefox和谷歌浏览器,但不适用于Safari浏览器。 那么,有谁知道问题是什么?有没有人有这个问题?

感谢

回答

0

你说你是不是掩盖任何帧(从服务器到客户端),在您发回的数据,请检查第二个字节的第一位。

根据RFC6445发送数据到客户端时,第二个字节(掩码标志)的第一位必须设置为0。如果你的框架设置不正确,该位设置为1,浏览器会抱怨“服务器不能屏蔽它发送给客户端的任何帧”

此外,这可能与你无关,但检查在升级/握手部分代码中没有任何结尾数据时,在Web套接字上工作时,后续chr(0)(空字符)在我尝试发送客户数据。