繁体   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