我正在尝试使用Spring和WebSockets开发聊天室应用程序。 从网上看,我发现了两个有趣的例子:
我的问题是我有一个严格的约束:所有客户端必须以相同的顺序(总顺序)查看邮件,即使同时发送也是如此。
示例:
客户1:1)A消息,2)B消息,3)C消息
Client2:1)A消息,2)B消息,3)C消息
Client3:1)消息A,2)消息B,3)C消息
例如同时发送了Msg.A和Msg.B的位置。顺序也可以是Msg.B和Msg.A。重要的因素是所有连接的客户端之间的消息视图保持一致。
从官方文档(https://docs.spring.io/spring/docs/5.0.0.BUILD-SNAPSHOT/spring-framework-reference/html/websocket.html#websocket-stomp-message-flow)中,我读到了有关WebSocket和STOMP支持的Spring发布/订阅抽象机制的信息:
客户端可以使用SEND或SUBSCRIBE命令发送或订阅 用于消息以及描述目标内容的“目标”标头 消息是关于的,谁应该收到它。这使得简单 可以通过以下方式发送消息的发布-订阅机制 代理到其他连接的客户端或将消息发送到 服务器请求执行一些工作。使用Spring的 支持STOMP,Spring WebSocket应用程序充当STOMP 代理客户。
我想知道订户是否以相同的顺序接收消息,或者在这种观点下是否有保证。是单独的TCP连接的抽象吗?在最后一种情况下,我是否应该实现充当票证分发程序的附加服务(以便允许客户等待序列号知识未收到的消息的到达)?