flask-socketio - 服务器到服务器通信

标签 flask-socketio

我想知道是否有一种方法可以在两个(或多个)flask-socketio 服务器之间直接通信。我想在服务器之间传递信息,并让客户端连接单个 Web 套接字服务器,该服务器将具有来自其他服务器的所有组合逻辑和数据。

我在 JS 中找到了这个例子 Socket IO Server to Server解决方案是使用 socket.io-client 连接到另一台服务器。

我查看了 Flask-SocketIO 文档以及其他资源,但是 Flask-SocketIO 似乎没有客户端组件。

有什么建议或想法吗?

最佳答案

Flask-SocketIO 2.0 可以(也许)做你想做的事。这在 Using Multiple Workers 中有解释。文档部分。

基本上,服务器被配置为连接到共享消息队列服务(例如,redis),然后它们前面的负载平衡器使用粘性 session 将客户端分配给池中的任何服务器。通过在队列上传递消息,广播操作在服务器之间自动协调。

作为附加功能,如果您使用此设置,您可以让任何进程连接到消息队列来为客户端发布消息,例如,您可以从工作进程或其他辅助进程向客户端发送事件不是 SocketIO 服务器。

从您的问题来看,您不清楚您是否希望实现类似的功能,或者您是否想让服务器出于不同的原因进行通信。目前不支持在队列上发送自定义消息,但你的问题给了我灵感,这可能对某些场景有用。

至于在您提到的问题中使用 SocketIO 客户端,应该也可以。您可以使用这个 Python 包:https://pypi.python.org/pypi/socketIO-client .如果你走这条路,你可以让服务器成为客户端并接收事件或加入房间。

关于flask-socketio - 服务器到服务器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34778341/

相关文章:

flask - 多个同时使用的单个 Redis 实例

python - 导入Flask-SocketIO实例

javascript - 为什么无法从JavaScript Web Worker访问此套接字?

python - 如何使用 websockets 通过 Flask 向特定用户发送消息?

python - 使用 eventlet 处理并发请求或线程化 Flask SocketIO

flask - 无法通过 wss 连接到 Flask-Socketio,但可以通过 ws 工作

使用 eventlet 和 Redis 进行 Flask socketio 调试会产生额外的绿色线程吗?

javascript - 重启 Supervisor 对 FlaskSocketIO 的影响

python - Flask-Socketio: namespace keyerror., 获取已连接客户端列表

azure - Azure 应用服务上的 Flask Socket.io 400 错误代码