2017-02-15 128 views
1

我想使用Python Tornado連接到使用特定子協議的websocket服務器(我們稱之爲「mySubProtocol」)。儘管如此,我無法找到如何使用websocket_connect方法來做到這一點。其方法簽名是:如何在Python Tornado websocket_connect方法中指定子協議參數?

def websocket_connect(url, io_loop=None, callback=None, connect_timeout=None, on_message_callback=None, compression_options=None) 

現在用於測試目的,我使用了一個名爲「黑暗的WebSocket終端」的工具,我可以簡單地指定的子協議作爲參數,下面像這樣

/connect ws://10.1.45.195:8081/resource mySubProtocol

網址

在Tornado中,我嘗試在URL除以websocket_connect方法的URL參數中的空格後添加子協議參數,但這會導致請求異常。

connection = tornado.websocket.websocket_connect(url="ws://10.1.45.195:8081/resource mySubProtocol", callback=self.onConnected, connect_timeout=30) 

在連接請求定義子協議,在我看來,像一個共同的任務,但是我覺得在這個非常少的信息。任何幫助是極大的讚賞。 親切的問候,blomquist

回答

0

其實只是發現如何做,並想讓你知道。您必須先創建一個http頭對象和一個http請求對象,如下所示:

headers = httputil.HTTPHeaders({'Sec-WebSocket-Protocol': 'mySubProtocol'}) 
request = httpclient.HTTPRequest(url="ws://10.1.45.195:8081/resource", headers=headers) 
connection = tornado.websocket.websocket_connect(url=request, callback=self.onConnected) 

這樣做。歡呼,blomquist