带有 websocket 和 SocketIO 的 Sanic。使用哪一个?

Sanic with websocket and SocketIO. Which one to use?

使用 Sanic,您可以使用 @app.websocket('/socket.io/') 处理 websockets 连接,但 Socket.io 中使用的协议是特定的。

Python 有 Python-Socketio 作为处理 Socket.Io 特定通信的模块,但他们建议使用这样的代码:

sio = socketio.AsyncServer(async_mode='sanic')
app = Sanic()
sio.attach(app)

@sio.on('connect')
def on_connect():
    ...

那么,应该使用哪一个呢?我们应该从 Sanic @app.websocket 内部实现 SocketIo 协议,还是应该忽略它并直接使用 SocketIo 的实现?

我在这里要求速度和最佳实践。如果最好的决定是使用 @app.websocket,我们如何在 Sanic 处理程序中设置 Socket.io?

Socket.IO 协议非常复杂,在 websocket 路由中手动实现它会花费您相当多的时间。另请注意,Socket.IO 对 HTTP 和 WebSocket 使用相同的路由,据我所知,使用 Sanic 不可能(至少很容易)做到这一点。

python-socketio 包与许多框架集成,包括 Sanic 以实现 Socket.IO 协议的所有细节。