HTTP 服务器外 Python3 的 Websocket 服务器
Posted
技术标签:
【中文标题】HTTP 服务器外 Python3 的 Websocket 服务器【英文标题】:Websocket server for Python3 outside HTTP server 【发布时间】:2011-09-28 13:10:12 【问题描述】:我正在寻找 Python3 的 websocket 服务器实现。 网络上有一些项目,但它们都在 HTTP 上下文中运行。 我需要一个在命令行上启动的服务器,而不是由 HTTP 服务器(没有可用的 HTTP 处理程序对象)
理想情况下,代码不应需要任何更大的第三方项目(如扭曲、龙卷风......)
有什么想法吗?
我的用例的具体描述:我的网络包含多个 python 服务器(不是 Web 服务器)。这些 Python 服务器中的每一个都将运行时信息记录到记录器中。现在,我希望能够在浏览器中收听这些日志……而 websocket 对我来说似乎是最有趣的解决方案……
【问题讨论】:
为什么没有可用的 HTTP 处理程序?所有版本的 python 都内置了 BaseHTTPServer。您是否出于某种原因将其删除? 你误会了,我的意思是我没有这个类的实例。我只是有一个普通的套接字,我想把它包装在一个 websocket 中...... 【参考方案1】:我的websockify 项目支持python3。构建 websockify 的 websocket.py 模块实现了一个通用的 python WebSocket 服务器。如果您想使用协议的新版本 (HyBi-07+),它目前需要 numpy 模块(我可能会在接下来的几天内实现较慢的通用回退)。
您还可以使用 2to3 和 pywebsocket 使其在 python 3 中运行。pywebsocket 确实是 Chrome 和 Mozilla 测试的 WebSocket 的参考实现。
【讨论】:
我已经花了一些时间在 websockify 上,它对 numpy 的依赖是我放弃它的原因之一。我尝试了 pywebsockets 的迁移(这似乎确实是我正在寻找的项目),但我没有成功将它迁移到 Python 3。我现在自己临时实现了 Hybi(感谢从 pywebsockets 代码中获得的灵感)。当我有空的时候,我会尽快继续迁移 pywebsockets... @gecco 仅供参考,当 numpy 不可用时,我已经将更改推送到 websockify 以使用数组模块而不是 numpy。此外,如果您觉得这充分回答了您的问题,请不要忘记选择答案(对于那些关注的人和您自己的 SO 回答率)。 由于我的问题仍然没有足够的答案,我宁愿让它保持开放...... @gecco。我已经从我的答案中删除了 numpy 引用,因为正如我所指出的,它不再需要。你能澄清一下你觉得你原来的问题还没有回答吗? Websockify 支持 python 3 并且不需要任何外部模块。此外,即使您自己决定走不同的路线,该答案也可能充分回答您的实际问题并对他人有用(这是选择它的部分原因)。 答案很有用,但在我看来,它并不能完全回答我的问题。 websockify 对象仅适用于 HTTP 服务器。我确实有一个 TCP 服务器。以上是关于HTTP 服务器外 Python3 的 Websocket 服务器的主要内容,如果未能解决你的问题,请参考以下文章
同时使用 HTTP 和 WebSockets 时的 API 命名约定