python-Sokesha副Gevent-Sokesha

python-socketio vs Gevent-socketio

我正在选择 python 库来编写嵌入我网站的实时聊天功能页面。

我找到了两个基于 Socket.IO、python-socketiogevent-socketio 的库:​​

来自python-socketio doc

Python implementation of the Socket.IO realtime server.

来自gevent-socketio doc

Socket.IO is a WebSocket-like abstraction that enables real-time communication between a browser and a server. gevent-socketio is a Python implementation of the protocol.

你看,两者都是Socket.IO的实现。

我想选择其中一个(或者不知道有没有比他们更好的库)。

我的考虑点如下:

  1. 我的python后端项目是由Django/Django-Rest-Framework框架编写的。

  2. 我的项目很急,想用一个更方便的lib,少写一些代码来实现我的需求。

我上网,gevent-socketio在线聊天必须使用gevent python WSGI服务器,我不确定这是否是我项目部署的限制。

谁能给我建议,让我选择最适合我的图书馆?

抱歉这么晚才回答这个问题。我是 python-socketio 的作者和维护者,所以我会给你一个有偏见的回应。

gevent-socketio 项目有一段时间没有维护了。截至今天,repository on GitHub 上的最新提交是从 2016 年 9 月开始的,大约 2.5 年前。此软件包支持的 Socket.IO 协议版本是 0.x 版本,它是旧的并且与 Socket.IO 1.x 和 2.x 版本完全不兼容。

我的 python-socketio 项目是由于 gevent-socketio 的开发速度放缓而诞生的,特别是由于从未收到升级以支持 1.x 版本 Socket.IO协议。与我的竞争对手不同,我决定不添加对 gevent 的硬依赖。相反,我有一个插件系统,它允许我支持许多不同的 Web 服务器框架。截至今天,支持扩展到 eventlet、gevent、uwsgi(与 gevent 结合)、asyncio(与 aiohttp、sanic 或任何 ASGI 兼容服务器结合)和 Tornado。这个包支持 Socket.IO 协议的所有 1.x 和 2.x 版本,我确保它可以连接到官方 JavaScript 客户端,这是大多数人使用的它。如果有用,还包括一个基于 Python 的 Socket.IO 客户端。

希望对您有所帮助!

您也应该检查 gevent-websocket。我每天都在我的项目中使用它,效果很好。

https://github.com/jgelens/gevent-websocket/tree/master/geventwebsocket