在flask socket-io上,如果有2个用户连接并且user1向user2发送消息,我如何拦截发送给user2的有效负载(在user2的应用程序上下文中,以便修改它)?我不想修改 user1 发送的有效负载(这很简单)。
从逻辑上讲,我想应该有一种方法可以在有效载荷在 ws 上传输之前拦截 user2 上下文中的事件。
谢谢!
在flask socket-io上,如果有2个用户连接并且user1向user2发送消息,我如何拦截发送给user2的有效负载(在user2的应用程序上下文中,以便修改它)?我不想修改 user1 发送的有效负载(这很简单)。
从逻辑上讲,我想应该有一种方法可以在有效载荷在 ws 上传输之前拦截 user2 上下文中的事件。
谢谢!
custom_emit_internal 的猴子补丁就成功了。希望它不会在下次更新时中断!
我认为您要求的是客户端功能。在服务器中,发送消息时唯一存在的上下文是发送者的上下文。交换是这样的:
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 的服务器端上下文甚至可能不在同一个服务器进程中,因为 Flask-SocketIO 可以驱动负载均衡器后面的服务器群。此外,事件的接收者可能不是单个用户,它可能是房间中的一组用户,甚至是所有连接的用户。
我不确定我是否理解您提出要求的目的,但如果您想详细说明,我或许可以提供建议。