目的:實現一次連接後,服務器可以主動發送信息給客戶端的功能。
基本概念
發佈/訂閱
(publish/subscribe
)模式- mqtt
貼一個mqtt說的比較好的。https://blog.csdn.net/weixin_40129263/article/details/80983858
能力有限,且時間間隔許久,說不明白,還是需要看上面的博客理解概念爲先。
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議),是一種基於發佈/訂閱
(publish/subscribe
)模式的“輕量級”通訊協議,該協議構建於TCP/IP協議上。
爲什麼需要額外的消息推送功能呢?
客戶抱怨推送通知不及時,很影響體驗。使用的第三方的推送(極光推送),有出現消息推送不及時甚至極光自己的服務器崩潰的情況無法推送的情況,需要在服務器上自己完成一個推送功能。
如何實現?
思路:服務器上在一個操作完成後,使用一個client作爲發佈者publish一條消息給代理broker,然後手機端和服務器連接後訂閱這條消息,並在接收消息的監聽裏處理此次推送。
具體的實現需要mqtt.js和mosca.js。
注意:
- mosca.js是作爲獨立的服務在服務器上運行的。
- 長連接需要設置mosca.js中http的port:3002不然不能保持長連接,如下代碼
const settings = {
port: 1883,
http: {
port: 3002, //WebSocket,
bundle: true,
static: './'
}
};
最後,最麻煩的其實是angular中如何將mqtt.js封裝成一個provider服務,初次理解頗費頭腦,僅做記錄。