WebSocketノードを使う(その2)
ここのところずっとNode-REDのサンプルを見ながら各ノードの使い方を確認しています。頭出しの記事はこちらをご確認ください。前回に続きWebSocketノードを見ていきます。
WebSocketサーバからメッセージを受信する
確認するサンプルは、「読み込み > サンプル > flows > node-red > network > websocket > 02 - Connect to websoket out server」です。Node-RED上のWebSocketサーバが送信するメッセージをクライアントで受信します。
上段のWebSocket outノードを確認すると、以下のように設定されています。
- 種類:待ち受け
- URL:/ws2
WebSocketサーバ「/ws2」でクライアントからの接続を待ち受ける、いわゆるサーバサイドのフローです。
- 種類:接続
- パス:ws://localhost:1880/ws2
こちらは、「ws://localhost:1880/ws2」からメッセージを受信するWebSocketのクライアントサイドのフローです。
Injectノードを実行すると、デバッグパネルに「Goodbye, World!」のログが出力されます。上段のフローでクライアントからの接続を待ち受けるWebSocketサーバを起動して、クライアントに対してメッセージを送信します。下段のフローではWebSocketクライアントが接続したサーバが送信したメッセージをログ出力しています。こちらも前回の記事と同様、イメージ的には、上下段のフローの間にWebSocketサーバがいて、Node-REDのフロー上でメッセージの送信と受信ができたということになります。
これで一応、動いてはいますが、これだけだとNode−RED内で完結してしまっているのでWebSocketが動いている実感が湧きません。そこで、ブラウザからWebSocketサーバに接続してメッセージを受信してみます。ということで、さきほど確認したサンプルに以下のフローを加えます。
ブラウザから「http://localhost:1880/hello」にアクセスすると、ブラウザのコンソール上に「onopen」のログが出力されています。WebSocketサーバに接続ができているようです。ここで、Node-REDのフロー上でInjectノードを実行すると、WebSocketサーバ「/ws2」に接続しているすべてのクライアントに対して「Goodbye, World!」のメッセージを送信します。Node-REDのデバッグパネルを確認すると、「onmessage: Goodbye, World!」のメッセージが出力されるはずです。これで、Node-RED上のサーバが送信したメッセージをブラウザで受信できることを確認できました。
まとめ
ここまで確認したことをまとめます。
- WebSocket outノードの種類を「待ち受け」に設定すると、WebSocketで接続を待ち受けるサーバになります
- WebSocket inノードの種類を「接続」に設定すると、WebSocketサーバにメッセージを送信するクライアントになります
ちょうど前回ご紹介したWebSocket outノードとWebSocket inノードの設定を入れ替えることでメッセージの送信と受信の関係が入れ替わります。
コメント
コメントを投稿