2

ws4py 0.3.2 を使用し、python 3.3.2 で cherrypy 3.2.4 を使用する Web サーバーソケットを作成しました。クライアントのメッセージを印刷しようとすると、このようにサーバーに送信されます

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 に答える