发送消息时的Python Websocket服务器错误
Posted
技术标签:
【中文标题】发送消息时的Python Websocket服务器错误【英文标题】:Python Websocket server errors when sending messages 【发布时间】:2015-06-08 13:25:51 【问题描述】:任何人都可以帮助我使用 python WebSockets 服务器每当我尝试发送 JSON 数据时出现很多错误,这是我的代码的链接:
http://textuploader.com/v5kn
我的客户端自上次更新以来没有改变,并且在连接到服务器后没有发送任何内容,所以应该没问题。
这是错误:
connection established ('127.0.0.1', 51777)
Handshaking...
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 51429)
Traceback (most recent call last):
File "C:\Python27\lib\SocketServer.py", line 599, in process_request_thread
self.finish_request(request, client_address)
File "C:\Python27\lib\SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Python27\lib\SocketServer.py", line 655, in __init__
self.handle()
File "C:/Users/Heslop/Desktop/Projects/SnakeServer/server.py", line 64, in handle
self.read_next_message()
File "C:/Users/Heslop/Desktop/Projects/SnakeServer/server.py", line 68, in read_next_message
length = ord(self.rfile.read(2)[1]) & 127
IndexError: string index out of range
【问题讨论】:
似乎您的服务器端代码在解码客户端发送的 msg 时存在一些问题。 是的,我就是这么想的!我不知道我认为它现在是我的 javascript 导致的问题,我如何发送像“SWITCHDIR 0”这样的字符串,因为现在我像 ws.send("SWITCHDIR 0") 那样做,但我开始认为它不对。 其实你可以试试third-lib为你的msg编解码,这样你就可以专注于app的构建了。这是我的:github.com/HelloLyfing/py-websocket-helper,如果您有任何问题,请告诉我。 请注意,read(2)
的意思不是“准确读取两个字节”,而是读取不超过两个字节 .对于网络 IO 尤其如此,read()
在有 any 数据可用时立即返回,甚至是单个字节。
lyfing - 你能把这个作为答案发给我吗?
【参考方案1】:
其实你可以试试第三个lib for ServerSide-ClientSide msg(frame
) 为你编码和解码,这样你就可以专注于应用程序的构建。
这是我的小包装:https://github.com/HelloLyfing/py-websocket-helper
由于我是唯一使用过此包装器的人,所以如果您有任何问题,请告诉我。
【讨论】:
以上是关于发送消息时的Python Websocket服务器错误的主要内容,如果未能解决你的问题,请参考以下文章