允许在 websockets 中删除消息
Posted
技术标签:
【中文标题】允许在 websockets 中删除消息【英文标题】:Allowing message dropping in websockets 【发布时间】:2021-07-14 20:01:12 【问题描述】:如果带宽不允许,是否有简单的方法或库允许 websocket 丢弃某些消息?还是以下任何一种?
测量尚未到达特定客户端的传出消息的队列大小 测量客户端最近接收消息的大致比特率 测量特定write_message
完成传输到客户端的时间
我在服务器端使用 Tornado (tornado.websocket.WebSocketHandler
),在客户端使用 vanilla JS。在我的用例中,服务器意识到客户端速度很慢并在意识到这种情况时限制其消息(或使用有损压缩)真的很重要。
【问题讨论】:
我不认为这是可以实现的。 【参考方案1】:您可以通过让客户端确认它收到的每条消息,然后在服务器上使用该信息来调整向每个客户端发送消息的方式来实现这一点。
这是您知道哪些传出消息尚未到达客户端、能够估计比特率或计算出消息到达客户端所用时间的唯一方法。您必须考虑到返回服务器的消息也需要时间,并且如果您在客户端上使用时间戳,它们可能与您的服务器不匹配,因为客户端的时间设置不正确。
【讨论】:
以上是关于允许在 websockets 中删除消息的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 tomcat 中的 websocket 发送二进制消息,但可以在 glassfish 中使用。使用 IllegalArgumentException 在 tomcat 中失败