我为Python和JavaScriptand使用WebSocket,直到现在Google Chrome的握手协议是draft hybi-00。我猜Google Chrome最近改变了协议到draft hybi-10。在新的协议握手中的数据编码hybi-10
所以今天我更新了握手代码,现在WebSocket被成功地创建并打开了。在JavaScript中的OnOpen事件,我发送一个简单的短信:
viz.ws = new WebSocket("ws://127.0.0.1:5500");
viz.ws.onopen = function() {
viz.ws.send("TEST\n");
};
我在Python服务器接收到该信息。然而,它以某种方式编码,我不能让简单的文本"TEST\n"
我送:
def recv_data(self, client, count):
try:
data = client.recv(count)
except:
return False
print data
print data.decode('utf-8','ignore')
return data.decode('utf-8', 'ignore')
的打印返回此:
üàÍu┬¯é0æ║▄
u0
而且他们总是不同的,但发送文本是始终为TEST\n
。
此外,服务器收到此数据,但客户端没有收到从服务器发送的任何数据。
我读hybi-10使用二进制文件...我错过了代码中的数据转换吗?我很抱歉,我真的是WebSockets的新手,这些协议正在搞乱我的头...
我回答了有关解码hybi-10中的消息的类似问题;也许它有帮助。 http://stackoverflow.com/questions/7040078/not-sure-how-to-frame-data-in-websockets-draft-08/7045885#7045885 – pimvdb
顺便说一句,Chrome 14改为hybi-08(这是几乎hybi-10),而稳定版本刚刚变成了14。Chrome 15将支持二进制帧。 – pimvdb
谢谢,我认为这会有很大帮助! =) – Neuza