使用 Python 中的标准模块连接到 Web 套接字(wss)?
Posted
技术标签:
【中文标题】使用 Python 中的标准模块连接到 Web 套接字(wss)?【英文标题】:Connect to web socket (wss) with standard modules in Python? 【发布时间】:2016-11-18 15:31:45 【问题描述】:我已使用 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
包或任何其他第 3 方 Python 包。
我已经搜索了互联网和那些我见过的使用 Python socket
模块的代码示例,参考通过http
或tcp
的连接,而我需要通过wss
建立连接。
【问题讨论】:
【参考方案1】:很晚了,但是对于任何可能在这里绊倒的人...Web Sockets 协议是建立在 TCP 上的,因此预计该协议的实现会通过 TCP 建立连接。此外,Web Socket 的打开握手是在 HTTP 之后完成的。这也可以解释为什么 Alex 看到了 HTTP 连接。如果您想了解如何从头开始实现一个,请安装 web socket 模块(高速公路,这反过来会导致安装和阅读 Twisted 和 asyncio 模块,或 wampy)并深入研究代码。建议在处理模块之前阅读https://www.rfc-editor.org/rfc/rfc6455 的 Web Sockets 协议规范。
【讨论】:
以上是关于使用 Python 中的标准模块连接到 Web 套接字(wss)?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用App Engine上的Python标准环境连接到Cloud SQL上的Postgres