前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >socket.io的 Python客户

socket.io的 Python客户

作者头像
py3study
发布2020-01-02 17:40:42
7290
发布2020-01-02 17:40:42
举报
文章被收录于专栏:python3python3

socketIO-client是python实现的SocketIO客户端。

问题

当接收到中文消息时出现下方错误,简单说就是编码问题。

代码语言:javascript
复制
Traceback (most recent call last):
  File "sub.py", line 24, in <module>
    socketIO.wait()
  File "/usr/local/lib/python3.5/site-packages/socketIO_client/__init__.py", line 232, in wait
    self._process_packets()
  File "/usr/local/lib/python3.5/site-packages/socketIO_client/__init__.py", line 254, in _process_packets
    for engineIO_packet in self._transport.recv_packet():
  File "/usr/local/lib/python3.5/site-packages/socketIO_client/transports.py", line 155, in recv_packet
    six.b(packet_text))
  File "/usr/local/lib/python3.5/site-packages/six.py", line 620, in b
    return s.encode("latin-1")
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 21-27: ordinal not in range(256)

解决方法

找到socketIO_client的安装路径,例中跟six.py在同一目录下,路径是/usr/local/lib/python3.5/site-packages/socketIO_client/.

找到socketIO_client文件夹下的transports.py文件

用编辑器打开transports.py,在144行左右的位置找到recv_packet函数

代码语言:javascript
复制
def recv_packet(self):
    try:
        packet_text = self._connection.recv()
    except websocket.WebSocketTimeoutException as e:
        raise TimeoutError('recv timed out (%s)' % e)
    except websocket.SSLError as e:
        raise ConnectionError('recv disconnected by SSL (%s)' % e)
    except websocket.WebSocketConnectionClosedException as e:
        raise ConnectionError('recv disconnected (%s)' % e)
    except socket.error as e:
        raise ConnectionError('recv disconnected (%s)' % e)
    engineIO_packet_type, engineIO_packet_data = parse_packet_text(
        six.b(packet_text))
    yield engineIO_packet_type, engineIO_packet_data 

修改倒数第二行six.b(packet_text))six.u(packet_text)),修改后保存.

再次运行代码接收中文消息,代码正常运行.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 解决方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档