我正在尝试构建一个简单的Python Websocket服务器。我想办法跟他握手之类的。然而,我不知道如何解码从浏览器收到的消息,这是服务器接收到的原始输出:'xÙõKþ°pãüCY
。我要怎么解码?
WebSocket协议包含一个分帧协议。浏览器不只是向服务器发送原始应用程序字节(反之亦然)。您需要解析成帧协议以提取原始字节。
已经实现了许多库来为您执行此解析。你应该试试用其中一个。其中一个这样的库是http://pypi.python.org/pypi/txWS/0.6.1,但如果您觉得它不合适,您可以通过稍微搜索找到其他库。
您从客户端发送的消息是什么?你确定你用的是Chrome 8(已经过时7个版本了)吗?如果你实际上使用的是最近的Chrome浏览器,那么你的问题很可能是你未能揭开有效载荷。在最新版本的协议(HyBi系列)中,所有客户端到服务器的数据都使用4字节运行的异或掩码来保护损坏的中介不被恶意Javascript劫持。
有关客户端到服务器负载屏蔽的描述,请参见规范的第5.3节。
另外,请注意有效负载数据是UTF-8编码的(在旧的协议中也是如此),您不能仅将其视为ASCII字符串。