如何保证 websockets 的可靠消息传递?
Posted
技术标签:
【中文标题】如何保证 websockets 的可靠消息传递?【英文标题】:How to assure reliable message delivery of websockets? 【发布时间】:2015-03-18 11:33:13 【问题描述】:我正在开发一个简单的服务器,其主要任务是像典型的Push Notification Server
一样向用户推送通知。我使用java websockets
通过 websocket 会话向用户推送通知。在开发相同的产品时,我列出了一些要求,其中可靠的消息传递是要求之一。
我正在向特定用户推送通知,如下所示,
session.getBasicRemote().sendObject(notification);
但上面的方法返回void
,这就是为什么我无法断定通知是否传递到另一端。
其中一个选项是,预期用户将向我的服务器发送反馈以获取相同的通知,我会将相同的通知标记为已成功发送。但这可能会导致网络流量增加。
在通过websocket session
发送通知时,是否有任何标准方法可以确保成功传递通知【问题讨论】:
【参考方案1】:websockets 规范非常低级,不提供发送消息的确认。您必须自己将其实现为应用程序级协议,或者在 websockets 之上使用现有协议。
Stomp 是一种流行的协议,它为消费的消息定义了一个“ACK”回复:Stomp specification
【讨论】:
虽然没有提供成功返回的确认,但传递失败是否意味着套接字连接的错误首先会使 TCP 客户端连接无效?换句话说,如果没有来自低级 TCP 套接字连接的任何其他错误,是否可以推断消息传递成功?以上是关于如何保证 websockets 的可靠消息传递?的主要内容,如果未能解决你的问题,请参考以下文章