烧瓶插座:before_send/after_send

flask-socketio: before_send/after_send

在flask socket-io上,如果有2个用户连接,user1向user2发送消息,我如何拦截发送给user2的payload(在user2的应用程序上下文中,以便修改它)?我不想修改 user1 发送的有效负载(这很简单)。

从逻辑上讲,我想应该有一种方法可以在有效负载在 ws 上传输之前拦截 user2 上下文中的事件。

谢谢!

我认为您要求的是 client-side 功能。在服务器中,发送消息时唯一存在的上下文是发送者的上下文。交换是这样的:

client                          | server
---------------------------------------------------------------------------
user1 sends event to server     |
payload includes msg for user2  |
                                |
                                | server decodes the msg payload in
                                | user1's context and sends msg to user2
                                |
user2 receives msg from server  |

如您所见,在服务器中,user2 不参与此事务,只有 user1 重要。 user2 的 server-side 上下文甚至可能不在同一个服务器进程中,现在 Flask-SocketIO 可以驱动负载均衡器后面的服务器群。还有,事件的接收者可能不是单个用户,可能是一个房间里的一组用户,甚至是所有连接的用户。

我不确定我是否理解您请求的目的,但如果您想详细说明,我或许可以提供建议。

custom_emit_internal 的猴子补丁成功了。希望下次更新不会坏!