簡體   English   中英

可以使用AngularJS + Flask堆棧推送通知嗎?

[英]Can push notifications be done with an AngularJS+Flask stack?

我的網站有一個Python / Flask后端和一個Angular前端。 在后端有一個進程偶爾檢查SQS的消息,我希望它向客戶端發送通知,然后客戶端可以更新Angular控制器。 我現有技術的最佳方法是什么?

為了能夠推送到客戶端,您必須以某種方式實現Web套接字支持。 如果你想將它保存在python / flask中,那么有關於如何使用gevent執行此操作的教程:

http://www.socketubs.org/2012/10/28/Websocket_with_flask_and_gevent.html

在那篇文章中,Geoffrey還提到了一個用於python / gevent的SocketIO兼容庫,它可以讓你利用名為“gevent-socketio”的SocketIO客戶端JS庫。

這可能會減少您在跨瀏覽器兼容性方面需要做多少工作,因為SocketIO已經完成了很多工作。

這是一個非常好的教程,介紹如何在AngularJS中使用SocketIO,以便在SocketIO發生事件時通知AngularJS模型:

http://www.html5rocks.com/en/tutorials/frameworks/angular-websockets/

如果您不想托管Web套接字后端,可以查看PubNub或Pusher等托管服務,然后將它們作為服務集成到AngularJS中。 您可以通過Python應用程序與這些服務進行通信(當SQS通知發生時),他們將為您通知所有連接的客戶端。

我知道這有點晚了,但我已經完全按照你的要求做了(盡管沒有Angular)。

我最終有一個單獨的進程運行一個名為Autobahn的websocket服務器,該服務器監聽一個redis pub / sub套接字,代碼在github上

這允許您從幾乎任何可以訪問redis的東西向您的客戶端發送推送通知。

因此,當我想向所有連接的客戶端發布消息時,我只需使用redis:

r = redis.Redis()
r.publish('broadcasts', "SOME MESSAGE")

到目前為止,這已經相當不錯了。 我目前無法做的是向特定客戶發送推送通知。 但是,如果您有一個身份驗證系統或某些東西來識別特定用戶,您可以將其綁定到打開的websockets,然后能夠直接向特定客戶端發送消息:-)

你當然可以使用任何websocket服務器或客戶端(如socket.io或sock.js),但這對我來說很有用:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM