使用 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 模块的代码示例,参考通过httptcp 的连接,而我需要通过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)?的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 连接到烧瓶 websocket

python sqlite3 怎么处理

如何使用App Engine上的Python标准环境连接到Cloud SQL上的Postgres

如何使用 Python 模块 wpa_supplicant 连接到安全 WiFi?

python中的subprocess.Popen()使用

当尝试使用 psycopg2 模块通过 python 连接到 redshift 时,会显示以下错误