我有一个spring + SockJS应用程序,它使用ActiveMQ作为消息代理。
我可以在同一个JSP页面上有两个套接字,一个有发送和接收,另一个只用于接收stomp消息(有很多流量).Is它保证所有的消息都将从这两个套接字发送和接收?
问候你,马尔科
发布于 2015-08-05 00:41:56
在连接的情况下,是的。如果您在任何时候断开连接,在断开连接和重新连接之间,您将失去一切。A related discussion of this issue得出了这样的结论。
请记住,SockJS可能会在不同的客户端上产生不同的连接类型,例如websocket、xhr、xdr等。在任何连接上,SockJS仍将使用TCP,并且仍将保证按顺序交付。但是,非websocket连接可能需要更长的时间才能触发关闭事件,因此您在客户端将有更长的封锁期。几乎任何服务都需要担心这一点,因为SockJS有时会无法连接websocket并“降级”到xhr (根据我的经验,在高瞬时负载下)。
一个不错的模式是在close事件处理程序中添加一个重新连接。即使连接无法建立,close even也会触发,这意味着您需要在重新连接时有一个后退延迟,以防止服务器上出现自我造成的DDoS。另外,我添加了连续的数据包编号,并将检测到丢失数据包的任何客户端视为晚加入者。(请参阅此related ZMQ discussion on late joiners。)您的应用程序需求可能会有所不同。
https://stackoverflow.com/questions/26260847
复制相似问题