【问题标题】:Python: Unable to decode response coming from server over websocketPython:无法通过 websocket 解码来自服务器的响应
【发布时间】:2018-02-26 14:28:51
【问题描述】:

我的 Python 脚本创建了一个 WebSocket,并且能够使用该 WebSocket 连接到服务器。服务器在我创建的 WebSocket 上发送响应,但 WebSocket 模块似乎无法对其进行解码。

这是我看到的错误:

-----------------------
Traceback (most recent call last):
  File "test_file.py", line 307, in <module>
    result = ws.recv()
  File "/usr/local/lib/python2.7/dist-packages/websocket/_core.py", line 293, in recv
    opcode, data = self.recv_data()
  File "/usr/local/lib/python2.7/dist-packages/websocket/_core.py", line 310, in recv_data
    opcode, frame = self.recv_data_frame(control_frame)
  File "/usr/local/lib/python2.7/dist-packages/websocket/_core.py", line 334, in recv_data_frame
    return self.cont_frame.extract(frame)
  File "/usr/local/lib/python2.7/dist-packages/websocket/_abnf.py", line 428, in extract
    "cannot decode: " + repr(frame.data))
websocket._exceptions.WebSocketPayloadException: cannot decode: '\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\x9dUmk\xeb6\x14\xfe+\xc1\x1f\xc7ug\'v\x1c\x17\xc6\xb8t\xa5\x0b\xac\xbdwm\x06\x83\xb9\x08Y>N\xb5kK\x8e$\'\xcdJ\xff\xfbt$;vac0\x87\x18\xe9\xbc<\xe7\xfd\xf8m\x11\x80RR1YAp\xbd\x88>-\x82\x16\xb4\xa6{\xbc\x05\x9f\xf7 \xccW%_\xcf7\xb2m{\xc1\x195\\\x8a\xc0JqMz\'

这是我启动 websocket 并监听服务器响应的一段代码:

ws = websocket.create_connection(full_url, header = header_set)
result = ws.recv()
print result

它在ws.recv() 行中失败。有什么想法吗?

【问题讨论】:

标签: python python-2.7 sockets websocket


【解决方案1】:

这似乎是websocket-client 版本0.16 的一个已知问题。尝试将软件包更新为 0.34 或更高版本,看看是否能解决问题。

显然,这是因为websocket-client0.16 之后的版本中改变了他们处理帧验证的方式(虽然不确定是哪个版本,所以请尝试更新到最新版本)。

支持链接: https://github.com/dpallot/simple-websocket-server/issues/24

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2011-10-08
    • 2018-09-16
    相关资源
    最近更新 更多