2013-05-20 21 views
6

私はPython/Flaskのバックエンドと私のウェブサイトのためのAngularフロントエンドを持っています。バックエンドにはSQSでメッセージをチェックするプロセスがあり、通知をクライアントにプッシュして、アンラーラルコントローラを更新することができます。これを私の既存の技術を実行する最良の方法は何ですか?AngularJS + Flaskスタックで通知をプッシュできますか?

答えて

6

クライアントにプッシュできるようにするには、いくつかの方法でWebソケットサポートを実装する必要があります。その記事の中で

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

、ジェフリーも可能パイソン/ geventためSocketIO互換ライブラリを言及:あなたはパイソン/フラスコでそれを維持したい場合は、geventでそれを行う方法については、このチュートリアルがありますあなたは "gevent-socketio"と呼ばれるSocketIOクライアントサイドのJSライブラリを活用することができます。

これは、SocketIOが既に多くのことを行っているため、ブラウザ間の互換性の面でどのくらいの労力を必要とするかを減らす可能性があります。あなたがホストしたくない場合は

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

:ここ

イベントがSocketIOから来るときあなたはAngularJSモデルに通知することができるようにAngularJSでSocketIOを使用する方法についてのかなり良いチュートリアルですPubNubやPusherのようなホストされたサービスを見て、サービスとしてAngularJSに統合することができます。これらのサービスは、Pythonアプリケーション(SQS通知が発生したとき)を介して通信することができ、接続されたすべてのクライアントに通知します。

2

私はこれがちょっと遅かったと知っていますが、あなたが求めているものはまったく行っています。

私はRedisのパブ/サブソケットにリッスンAutobahnと呼ばれるのWebSocketサーバーを実行している別のプロセスを持つことになった、コードはhere on github

ですこれは、あなたはかなりのものから、あなたのクライアントにプッシュ通知を送信することができます赤ちゃんにアクセスすることができます。

だから私は、私はちょうどこのようRedisのを使用するすべての私の接続されたクライアントにメッセージを公開したいとき:

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

これは、これまでのところ、かなり良い仕事をしています。私が現在行うことができないことは、特定のクライアントにプッシュ通知を送信することです。しかし、特定のユーザを特定する認証システムや何かを持っている場合は、開いているウェブソケットにそれを結びつけて、特定のクライアントに直接メッセージを送ることができます:-)

ウェブソケットサーバクライアント(socket.ioやsock.jsなど)ですが、これは私のためにはうまくいきました:-)

関連する問題