Laravel,Node.js,Redis(Pubsub)を使用してSocketIOを用いたリアルタイムなチャットシステムを構築したいと考えています。
実装すべき処理は以下のような流れをイメージしています。
*以下socketIOのコネクションが確立されている前提。
1)送信側がメッセージを入力し、送信ボタンを押下する。
2)Ajaxからサーバサイドにリクエストが飛ばされる
3)LaravelのRedisドライバを用いてpublish
4)Node.jsで3)のpublishを検知
5)Node.jsから受信側のユーザへメッセージを送信する。
第一の質問として上記の処理の流れでリアルタイムなチャットシステムは実現できるでしょうか?
仮に上記のアーキテクチャが正しいとした場合、以下のような疑問が生じます。
疑問1.3)でredisにpublishする際、どのようにして送信先ユーザを特定するのでしょうか?全ユーザに対しブロードキャストして、受け手側が自分に対するメッセージかどうかを判断するのでしょうか?
疑問2テキストメッセージの情報はどのようにして相手に送信するのでしょうか?まずメッセージをDBに保存し、pusblishを検知した受け手側が対象のレコードを参照するような仕組みを考えましたが、その構成だとDBのIO処理を待つことになるためNodeのノンブロッキングな仕組みに合わないような気がしています。
疑問3Node側でユーザ認証の仕組みは不要でしょうか?ログインユーザの制御はLaravelで行いますが、SocketIOの仕組みを提供するNode.js側ではユーザの認証情報については意識しなくても良いのでしょうか?それともRedisでセッション情報を共有してNode側でも何かしらの認証を設けるべきでしょうか?Node側でも認証周りで考慮する点があればお知恵を拝借できればと思います。
以上となります。SocketIOを用いたリアルタイムシステムのアーキテクチャについてそもそもの理解が足りていない気がするので、その点踏まえご説明頂ければ非常に助かります。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/21 09:54