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和跺腳端點。
謝謝!
您的客戶是否有他們的系統上運行的客戶端程序?你有沒有對該代碼的控制?如果是這樣,你的阻力最小的路徑是實現代碼,當客戶端連接時從服務器拉入(或請求)消息 - 應該已經在那裏。那麼服務器就會知道消息被推送了。 –
如果服務器不知道客戶端何時收到推送消息,它是如何知道消息是否必須發送給客戶端的? –
客戶告訴服務器「嗨!我在這裏!」當它連接。服務器然後說:「好的,在這裏拿這些消息!」客戶回覆「好吧,我得到了他們,謝謝你!」服務器正在等待客戶端告訴它它已收到消息,直到服務器不知道客戶端是否收到消息。如果我寄給你一封信,而你不寄一封信,我怎麼知道你收到了我寄給你的信?據我瞭解,這個問題與TCP通過UDP解決的問題相同。 –