我使用Python外部包websocket-client
连接到发送事件的RESTful服务。
from websocket import create_connection
ws = create_connection("wss://machine:port/servicename/subscribe")
for event in ws:
print event
...getting events printed
我想知道是否可以使用核心Python 2.7或Python 3.5实现相同的功能,而无需安装外部websocket-client
包或任何其他第三方Python包。
我已经搜索了互联网和那些使用Python socket
模块的代码示例,我看到过,通过http
或tcp
参考连接,而我需要通过wss
建立连接。
很晚了,但是对于任何可能在这里绊倒的人…Web Sockets协议建立在TCP之上,因此期望该协议的实现通过TCP建立连接。此外,Web Socket的打开握手是按照HTTP完成的。这也解释了为什么Alex能看到HTTP连接。如果你想看看如何从头开始实现一个,安装web套接字模块(autobahn,这反过来会导致安装和读取Twisted和asyncio模块,或者wampy),然后深入研究代码。建议在处理模块之前阅读Web Sockets协议规范https://www.rfc-editor.org/rfc/rfc6455。