如何在Python Tornado websocket_connect方法中指定子协议参数?

2024-09-29 22:32:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用pythonTornado通过一个特定的子协议(我们称之为“mySubProtocol”)连接到websocket服务器。但是,我无法找到如何使用websocket_connect方法来实现这一点。其方法签名为:

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

现在出于测试目的,我使用了一个名为“Dark WebSocket Terminal”的工具,在这里我可以简单地将子协议指定为URL后面的一个参数,如下所示

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

在Tornado中,我尝试在websocket_connect方法的URL参数中的URL除以一个空格之后添加subprotocol参数,但这会导致一个错误的请求异常。在

^{pr2}$

在connect请求中定义子协议在我看来是一项普通的任务,但是我发现这方面的信息很少。非常感谢任何帮助。 谨致问候,布洛姆奎斯特


Tags: 方法io服务器noneloopurl协议参数
1条回答
网友
1楼 · 发布于 2024-09-29 22:32:48

事实上,我只是想知道怎么做并且想让你知道。您必须先创建一个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)

就这样。干杯,布洛奎斯特

相关问题 更多 >

    热门问题