【发布时间】:2020-12-14 21:55:34
【问题描述】:
我正在运行高速公路/twisted python websocket 服务器,但在向客户端发送消息时遇到问题。当客户端向它发送消息时,它似乎只向客户端发送消息。出于某种原因,如果我想强制向连接的客户端发送消息,则消息会卡在队列中,直到任何客户端向我发送消息。此时,所有排队的消息都会发送到所有客户端。
我能够使用 python 客户端和 javascript 客户端针对这个 python autobahn/twisted websocket 服务器重现这种行为。
谁能告诉我如何正确地将消息从 websocket 服务器发送到所有连接的客户端?我的目标是让客户端订阅事件,然后服务器只向他们发送事件消息。但是由于某种原因,上述行为不允许服务器向客户端发送消息,除非他们首先向服务器发送消息。
您可以使用下面的代码轻松地重现它:您只需要一台服务器和一个客户端即可重现它。我使用了两个不同的客户端来证明问题出在服务器上。
Autobahn/twisted python websocket server
无论我使用的是哪个 websocket 客户端,我都会看到相同的行为。很明显,websocket 服务器出于某种原因正在排队消息。
服务器日志,每 5 秒在它声称发送消息的点上。
Python 客户端显示服务器发送消息和 Python 客户端接收消息之间的时间差。请注意,它们是分块出现的,有些有很大的延迟。
只有在向服务器发送新消息后,Javascript 客户端才会以 4 个块的形式获取它们。
【问题讨论】:
标签: python websocket twisted autobahn