假設我有一個聊天應用程序,並且我正在給另一個用戶(用戶B)發送消息,我們的消息通常使用套接字接收,但是當用戶B下線時,他與套接字服務器斷開連接,但用戶A繼續發送文本他讓我的服務器向用戶B的設備發送用戶A發送的每條消息的推送通知。我的問題是,APNS將充當消息代理並將所有消息排隊,直到用戶B重新登錄並接收它們?還是我必須存儲在別處Apple推送通知可以用作消息隊列嗎?
1
A
回答
3
蘋果推送通知服務容易發現包括服務質量(QoS)的組件,其執行一個存儲和轉發功能未被接收的消息。如果APN嘗試發送通知並且目標設備處於脫機狀態,則APN將在一段有限的時間內存儲通知,並在設備再次可用時發送通知。此組件僅存儲每個設備和每個應用的最新通知。如果設備處於脫機狀態,則發送針對該設備的通知請求會導致先前的請求被丟棄。如果設備長時間處於脫機狀態,則其在APN中存儲的所有通知都將被丟棄。
所以,不,你不能使用APN作爲消息代理。
您可以使用推送通知作爲信號來喚醒並與服務器端消息隊列同步。 RabbitMQ或Kafka可能是候選經紀人,MQTT看起來很有希望成爲協議。您將需要計算如何以及何時丟棄未成功傳送到設備的消息隊列的內容。
相關問題
- 1. GCM可以向VoIP iOS發送推送通知消息嗎?
- 2. Apple推送通知Rails應用程序消息傳送
- 3. iOS推送通知消息
- 4. iOS Web Apps可以接收Apple推送通知嗎?
- 5. 我可以利用Apple的推送通知服務器來使用即時消息應用程序嗎?
- 6. 對於Apple推送通知,我可以在沒有設備令牌的情況下發送消息嗎?
- 7. BlueMix推送通知 - 支持Apple本地化提醒消息
- 8. Apple推送通知系統未收到消息! (PHP)
- 9. Firebase推送通知的通知消息的click_action不起作用
- 10. Apple推送通知問題
- 11. Apple推送通知構造
- 12. Qt Apple推送通知
- 13. Apple推送通知證書
- 14. 過濾Apple推送通知
- 15. Apple推送通知配置
- 16. 我可以在Cydia應用程序中使用Apple推送通知嗎?
- 17. Apple推送通知或Firebase推送通知?
- 18. 無Apple推送通知服務的推送通知?
- 19. Apple的推送通知服務可靠嗎?
- 20. 我可以直接向隊列發送消息請求嗎?
- 21. Apple推送通知 - 送貨回執
- 22. Apple推送通知不適用於aps_production.cer
- 23. 如何使用Apple推送通知?
- 24. Pushpad或Web推送通知消息
- 25. 不要推送通知消息
- 26. 消息不刷新推送通知
- 27. Android推送通知消息格式
- 28. Localytics android推送消息通知聲音
- 29. quickblox ios推送通知消息問題
- 30. 推送通知消息定製?
在RabbitMq中存儲未接收到的消息是一種比將它們放入數據庫然後在用戶重新登錄時選擇它們更好的方法? –
@RyanMurphy:取決於規模。使用數據庫的方法比消息隊列難以縮放。消息隊列傾向於具有定義好的關於「消費」消息的語義 - 如果向服務器發送請求(隨後從數據庫獲取消息),如果移動設備沒有收到回覆,會發生什麼情況?您需要建立某種確認,確認設備在移除它們之前實際得到了它們。實質上,你正在從數據庫中構建一個併發的MSG Q,而實際上並不那麼容易。 – marko