【问题标题】:Server to Server Communication服务器到服务器通信
【发布时间】:2016-04-19 02:45:47
【问题描述】:

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

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

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

有什么建议或想法吗?

【问题讨论】:

    标签: flask-socketio


    【解决方案1】:

    Flask-SocketIO 2.0 可以(也许)做你想做的事。这在文档的Using Multiple Workers 部分进行了说明。

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

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

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

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

    【讨论】:

    • 谢谢!这很有帮助。更具体地说明我想要实现的目标:我正在使用多台 Raspberry Pi 计算机来集成不同的传感器和控制电子设备。因此,虽然我可以在客户端设备上打开多个 Web 套接字以连接到每个 Raspberry Pi 服务器,但我正在寻找的是使两个 Raspberry Pi 服务器能够交换数据,并合并和/或在多个在决定做什么或呈现给客户之前在后端输入。想想温度传感器服务器向炉子控制服务器发送数据以调高或调低热量。
    • 基本上你有两个选择。您可以执行我在上一段中提到的操作(每个 Pi 是一个 SocketIO 服务器,也是其他服务器的一个 SocketIO 客户端),或者可能更有效,将一个 redis 服务器放在一个节点中并让所有节点连接并通过 Pub/Sub 共享消息。后一种方法是我在扩展的 2.0 版本内部实现的,但正如我上面提到的,目前不支持自定义使用队列,你必须通过直接与队列交谈来做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2013-07-01
    • 2019-12-24
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多