在python 3上读取TextMessage ws4py

时间:2013-10-05 08:41:45

标签: python-3.x cherrypy ws4py

我使用ws4py 0.3.2创建了一个Web服务器套接字,它在python 3.3.2上使用了cherrypy 3.2.4。当我尝试打印客户端的消息时发送到服务器,如this

class ChatWebSocketHandler(WebSocket):
    def received_message(self, m):
        cherrypy.log("[+] Message => {%d} %s" % (len(m), m))
        cherrypy.engine.publish('websocket-broadcast', m)

我收到错误消息:

  File "./server.py", line 13, in received_message
    cherrypy.log("[+] Message => {%d} %s" % (len(m), m))
TypeError: __str__ returned non-string (type bytes)

1 个答案:

答案 0 :(得分:4)

返回的对象是TextMessage或BinaryMessage类型,因此您无法直接将其强制转换为字符串。要获取有效负载(在本例中为字符串),您需要访问数据属性:

像这样:

def received_message(self, m):
  if m.is_text:
    recvStr = m.data.decode("utf-8")
    print(recvStr)

希望这是可用的。