2016-06-14 136 views
0

我需要编写一个可以在客户端发送推送通知的应用程序。但是有时客户端会断开连接,所以我想要存储通知并在重新连接时将它们发送给客户端。确保收到消息

有没有办法做到这一点? 我需要一种方法在发送之前知道客户端是否存在,或者知道是否收到通知的方式。 而我的通知是客户特定的。

我不能炫耀大量的代码,但我想用这样的:

@Autowired 
private SimpMessagingTemplate messagingTemplate; 

public void sendPush(Long clientId) { 

    messagingTemplate.convertAndSendToUser(clientId, "/queue/reply", myMessage); 
    // -> how do I know if message is received ? 
} 

我用弹簧的WebSocket和跺脚端点。

谢谢!

+1

您的客户是否有他们的系统上运行的客户端程序?你有没有对该代码的控制?如果是这样,你的阻力最小的路径是实现代码,当客户端连接时从服务器拉入(或请求)消息 - 应该已经在那里。那么服务器就会知道消息被推送了。 –

+0

如果服务器不知道客户端何时收到推送消息,它是如何知道消息是否必须发送给客户端的? –

+1

客户告诉服务器“嗨!我在这里!”当它连接。服务器然后说:“好的,在这里拿这些消息!”客户回复“好吧,我得到了他们,谢谢你!”服务器正在等待客户端告诉它它已收到消息,直到服务器不知道客户端是否收到消息。如果我寄给你一封信,而你不寄一封信,我怎么知道你收到了我寄给你的信?据我了解,这个问题与TCP通过UDP解决的问题相同。 –

回答

0

也许你可以期望得到来自用户的“ack”消息。 只有在得到答案后,才能将所有消息保留在数据结构中并将其从消息中删除。

+0

是的,的确,这是一个解决方案,但我会优先保留服务器端的逻辑并在客户端执行最小化。 –