2017-07-06 160 views
2

我有一個服務器如下: -Python扭曲 - 如何通過連接的套接字連接發送數據?

class MyServerProtocol(WebSocketServerProtocol): 

    def onConnect(self, request): 
     print("Client connecting: {0}".format(request.peer)) 

    def onOpen(self): 
     print("WebSocket connection open.") 

    def onMessage(self, payload, isBinary): 
     self.sendMessage(payload, isBinary) 

    def onClose(self, wasClean, code, reason): 
     print("WebSocket connection closed: {0}".format(reason)) 

上面的代碼接收消息和回覆回來的同樣的信息。但是,我的用例是不同的。

我處理一些數據,將其存儲到數據庫,然後終於想將數據發送到連接的客戶端,或特定的一組連接的客戶端和其他類型到另一種類型的數據。

我該怎麼辦呢?我怎樣才能在課堂外撥打sendMessage功能?

回答

0

你需要繼承WebSocketServerFactory保持跟蹤你的連接。

看看這個example,存儲在一個列表中,並廣播到所有的人的所有已打開的連接。您可以輕鬆地將其調整爲向特定客戶端發送特定消息。

+0

感謝@Henry響應。當我玩弄代碼時,我偶然發現了兩種情況(疑惑)。 1)考慮一種情況,我有一個將數據保存在數據庫中的API端點。在'post_save'信號(Django)中,我想將數據廣播給連接的客戶端。我該怎麼做? '2)'爲什麼有2個端口,即'9000'和'8080'? – PythonEnthusiast

+0

API端點是Django應用程序上的websockets端點還是HTTP端點?是節約用的WebSockets消息或HTTP請求觸發的數據? –

+0

HTTP請求...... – PythonEnthusiast

0

你確定你不想只是使用WAMP,而不是原始的WebSockets的?

這可能是您的使用情況要容易得多,因爲「廣播信息給有興趣的客戶」正是發佈/訂閱模式是。

+0

的任何鏈接,我可以讀一下嗎? – PythonEnthusiast

+0

http://crossbar.io/ – meejah