使用python SocketIO向服务器发送消息

时间:2016-03-23 17:59:10

标签: python-2.7 socket.io

我有一种情况,我有一个python客户端尝试使用SocketIO向服务器发送消息。我使用sock.emit发送json消息,如下所示

    sock = SocketIO(url, None, ...)
    message = {'ob': 'house',
               'ids': ['54fjadb70f9756','39f1ax451f6567']}
    self.sock.emit(message)

服务器需要以下内容:

     {"ob":"house","ids":['54fjadb70f9756','39f1ax451f6567']}

服务器当前收到以下消息:

    {"args": [], "name": "{\"ids\": [\"54fjadb70f9756\", \"39f1ax451f6567\"], \"ob\": \"house\"}"}

然后抱怨无效的消息。

如何发送消息以便服务器按预期接收消息,即我指定的原始消息结构?当我发送它时,似乎emit正在改变消息的结构,是否有可能覆盖并更改发射以保留原始消息结构?我是怎么做到的?

1 个答案:

答案 0 :(得分:0)

Socket.io .emit()有两个参数。第一个参数是一个消息名称,它应该是一个普通的字符串。第二个参数是可选的,可以是JSON编码数据的数据。

因此,您尝试将数据作为消息名称发送。那样不行。您需要创建消息名称并将数据作为该消息名称的参数发送。

sock = SocketIO(url, None, ...)
message = {'ob': 'house',
           'ids': ['54fjadb70f9756','39f1ax451f6567']}
sock.emit("someMessageName", message)

然后,在服务器上,您需要拥有该特定消息名称的侦听器,然后您可以在调用该消息侦听器时接收数据。