2016-03-23 58 views
0

我有一種情況,我有一個python客戶端嘗試使用SocketIO向服務器發送消息。我使用sock.emit發送JSON消息,如下圖所示使用python SocketIO向服務器發送消息

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\"}"} 

然後抱怨無效的消息。

我將如何發送消息,以便服務器按預期收到它,即我指定的原始消息結構?它似乎發射正在改變消息的結構,當我發送它,是否有可能重寫和更改發射到它保留原始消息結構?我怎麼能這樣做?

回答

0

Socket.io .emit()需要兩個參數。第一個參數是一個消息名稱,它應該是一個純字符串。第二個參數是可選的,可以是將成爲JSON編碼數據的數據。

所以,你試圖發送你的數據作爲消息的名稱。這是行不通的。您需要創建一個消息名稱並將該數據作爲該消息名稱的參數發送。

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

然後,在服務器上,你需要有特定的消息名稱的監聽器,然後調用該消息監聽器時,你可以接收數據。

相關問題