Socket.IOの処理順とは?
今回はSocke.IOでwebsocketが接続完了してからイベントが呼ばれるまでの処理の間でどういったものがどんな順番で実行されているかについて説明します。
Socket.IOやリアルタイム通信と聞くと難しそうといったイメージが湧く方もいると思いますが、最近はライブラリの使い方をしっかり把握しているだけで十分扱えるのでこの機会に是非マスターしてください。
Socket.IOの処理順を理解しておくとユーザーの認証処理だったり、アクセスログの処理をどこに組み込むのがベストなのか分かるので是非参考にしてみてください。
*weboskcetの接続が確立するまでについては今回書きません。
1.websocket接続時
まずはじめにwebsocketの接続が確立すると呼ばれるのがnamespace: ’/’に対する処理です。Socket.IOではnamespaceやイベントに対して毎回呼ばれる処理をミドルウェアと説明しているので以降はミドルウェアと書きます。
Socket.IOは’/’以外のnamespaceに対して接続要求があったとしてもまずはじめに’/’に対して接続してから他のnamespaceに接続します。
従って、cookie-parserやexpress-sessionを使用したユーザーの認証処理は’/’のミドルウェアに対して実装するのがセオリーです。
‘/’に対するミドルウェアが処理された後は’/’のon(‘connect’)イベントが呼ばれます。この処理の中では基本的にsocketに対するミドルウェアやイベントを実装します。
2.イベント発火時
クライアントから実際にイベントが呼ばれたときは接続時と同様に先にsocketに対するミドルウェアの処理が実行されます。ミドルウェアの処理が全て完了したらイベントが処理されるといった処理順番になっています。
まとめ
- namespaceに対するミドルウェアが処理される。その中でも’/’に対する処理が一番最初
- connectイベントが呼ばれる。
- クライアントからイベントが呼ばれると接続時と同様に先にミドルウェアが処理される
- 最後にイベントが呼ばれる
おすすめ書籍
基礎から応用までサンプルコードを使って解説しており、Node.jsが初めての人でも読める技術書となっています。上級者向けにはExpressフレームワークを使った実用的な開発手法の解説もありこれからアプリケーションを開発する人の参考になると思います。現状では書き方が古くなっていますが、Node.jsの初心者から上級者で学ぶことの多い書籍です。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す