2016-08-05 5 views
3

私はいくつかのイオンアプリを開発中です。ここではlaravelがAPIに使用されています。リアルタイムのチャット機能を有することに対する要求がある。APIチャットでIonicとlaravelを使用したリアルタイムチャット

私はsocket.ioのようなものを使用しようとしています。

質問スタックを変更することなく、どのように達成できますか?私の現在のスタックはcordova、ionic、そしてサーバ側のlaravel mysqlです。

現在のスタックでこれを達成できますか?

ご協力ありがとうございます。

乾杯!

+0

[simple websocket implementation in laravel 5]の可能な複製(http://stackoverflow.com/questions/33471695/simple-websocket-implementation-in-laravel-5) –

答えて

4

はい、このスタックで行うことができます - 私はそれを自分でやりました。それを行う方法についてはa blog postと書きました。これについてのLaravelのドキュメントもgoes into some detailです。私たちのアプリはIonicを使用していませんでしたが、それ以外の状況は基本的に同じでした。次のように

その要旨は次のとおり

  • メッセージは、メッセージが送信される通常
  • としてPOST要求を介してRESTのAPIに送信され、コントローラはNewMessageイベント
  • これを発射しますイベントはブロードキャスト可能に設定され、Redisドライバを使用します(Pusherを使用することを好むかもしれませんが、私はRedisとSocket.ioを使用しました)
  • 別のNode.jsスクリプトがNewMessageイベントをリッスンし、接続されているすべてのクライアントにメッセージ
  • socket.io-clientを使用してメッセージを受信すると(チャットは、唯一の適切なクライアントプライベートであることを意味している場合は)tsは、適切な措置が取られ、例えばメッセージはDOM

だけ加えますに挿入され、あなたのスタックを作る必要があるのはNode.jsとRedisです。私が持っていた最大の問題は、Nginxを設定することでしたが、それはSSLを使用していたこともありました。

希望はこれが理にかなっています。これを達成するための情報が必要な場合はお知らせください。

+0

意味があります。しかし、私がredisに行くなら、クライアント側では、私はredisから放送されたイベントを聞くことができるノードスクリプトを設定しなければならないでしょう。どこでこのノードサーバーをセットアップしますか?コミュニケーションはアンドロイド(コードヴァ)からサーバー(ララベル)に似ています。双方向通信が必要な場合は、このノードスクリプトが存在し、ノードサーバーが設定されます。私の好奇心が混乱するようになってくれることを願っています。笑 。 –

+1

Node.jsスクリプトは、同じサーバー上で非常に楽しく実行できます。別のポートでリッスンするだけで、NginxはそのポートへのNode.jsスクリプトへのプロキシ要求をリバースできます。私の経験では、LaravelにHTTP経由でメッセージを受信させ、受信時にそれらをブロードキャストすることが最善であったということでした.Node.jsにすべてを切り替えることなくWebSocket経由でメッセージを送受信することはあまり実用的ではありませんでした。完全に受け入れられる妥協であった。 –

+1

基本的には、LaravelがイベントをRedisにプッシュし、Node.jsスクリプトがイベントをピックアップし、Socket.io経由でブロードキャストし、アプリケーションがSocket経由でイベントをピックアップするという流れです。ioクライアント –

関連する問題