发送消息时的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服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

Python WebSocket客户端连接但不发送消息

Python websocket 客户端 - 从 python 代码向 WebSocketServer 发送消息

在回调之外按需发送 websocket 消息?

Python在tkinter中发送websocket消息

如何在 websocket 服务器上向特定用户发送消息

通过php 向tornado websocket 服务器发送消息?