1

几个月来,我一直在毫无问题地使用 websockets 在 Chrome 和我的本地主机应用程序之间进行通信。突然间,使用最新版本的 Chrome,数据传输不顺畅。

在 Chrome 扩展的 javascript 中,代码的相关部分是:

window.ws = new WebSocket("ws://localhost:13000/");

window.ws.onopen = function () {
    window.ws.send('GO');

在我的 C# 应用程序中:

string msg = ASCIIEncoding.UTF8.GetString(buffer);
Debug.WriteLine(msg);

几个月来这工作得很好,我会日复一日地得到“GO”。现在我在接收缓冲区上得到的是 4 个字节{114,247,7,0),在我能找到的任何编码中都不会转换为“GO”。有人知道会发生什么吗?我很困惑,因为我没有触及代码的任何一端(chrome 或 listener)。

干杯!

PS:完整的 Chrome 版本 19.0.1084.15 beta-m

4

2 回答 2

2

弄清楚了。原来 Chrome 刚刚默认启用了 websockets 上的压缩。我只需要修改我端的 websocket 服务器以拒绝该扩展,Chrome 就会恢复为纯文本。

于 2012-04-13T08:27:24.783 回答
0

阅读一些关于掩蔽的数据。浏览器可能会在启用掩码的情况下发送消息,它会在帧中添加额外的 4 个字节,从而将掩码应用于您的消息。浏览器可能已启用或禁用它,因此在服务器端您应该同时支持并使用屏蔽,如果帧包含屏蔽启用位。

查看如何根据RFC 6455应用屏蔽

于 2012-04-13T09:37:43.693 回答