Python 3.x 在python 3上读取文本消息ws4py

Python 3.x 在python 3上读取文本消息ws4py,python-3.x,cherrypy,ws4py,Python 3.x,Cherrypy,Ws4py,我已经使用ws4py 0.3.2创建了一个web服务器套接字,它使用Python3.3.2上的cherrypy 3.2.4 我收到错误消息: File "./server.py", line 13, in received_message cherrypy.log("[+] Message => {%d} %s" % (len(m), m)) TypeError: __str__ returned non-string (type bytes) 返回的对象的类型为TextMe

我已经使用ws4py 0.3.2创建了一个web服务器套接字,它使用Python3.3.2上的cherrypy 3.2.4

我收到错误消息:

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

返回的对象的类型为TextMessage或BinaryMessage,因此不能直接将其转换为字符串。要获取有效负载字符串,在这种情况下,您需要访问数据属性:

像这样:

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

希望这是可用的。

返回的对象类型为TextMessage或BinaryMessage,因此不能直接将其转换为字符串。要获取有效负载字符串,在这种情况下,您需要访问数据属性:

像这样:

def received_message(self, m):
  if m.is_text:
    recvStr = m.data.decode("utf-8")
    print(recvStr)
希望这是可用的。

将cherrypy.log[+]消息=>{%d}%s%lenm,m替换为cherrypy.log[+]消息=>{%d}%r%lenm,m。然后会发生什么?输出cherrypy.log[+]Message=>{%d}%r%lenm,m是:[+]Message=>{46}替换cherrypy.log[+]Message=>{%d}%s%lenm,m为cherrypy.log[+]Message=>{%d}%r%lenm,m。然后会发生什么?输出cherrypy.log[+]Message=>{%d}%r%lenm,m是:[+]Message=>{46}