2

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

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)
4

1 回答 1

4

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

像这样:

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

希望这是可用的。

于 2013-10-29T22:02:45.927 回答