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」でクライアントからの接続を待ち受ける、いわゆるサーバサイドのフローです。


続いて、下段のWebSocket inノードを確認すると、以下のように設定されています。
  • 種類:接続
  • パス:ws://localhost:1880/ws2
こちらは、「ws://localhost:1880/ws2」からメッセージを受信するWebSocketのクライアントサイドのフローです。


Injectノードを実行すると、デバッグパネルに「Goodbye, World!」のログが出力されます。上段のフローでクライアントからの接続を待ち受けるWebSocketサーバを起動して、クライアントに対してメッセージを送信します。下段のフローではWebSocketクライアントが接続したサーバが送信したメッセージをログ出力しています。こちらも前回の記事と同様、イメージ的には、上下段のフローの間にWebSocketサーバがいて、Node-REDのフロー上でメッセージの送信と受信ができたということになります。


これで一応、動いてはいますが、これだけだとNode−RED内で完結してしまっているのでWebSocketが動いている実感が湧きません。そこで、ブラウザからWebSocketサーバに接続してメッセージを受信してみます。ということで、さきほど確認したサンプルに以下のフローを加えます。


Templateノードは以下のように設定します。違いは接続するWebSocketサーバのURL(ws://localhost/ws2)のみです。


ブラウザから「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ノードの設定を入れ替えることでメッセージの送信と受信の関係が入れ替わります。

コメント

このブログの人気の投稿

Joinノードを使う(その1)

Execノードを使う

Joinノードを使う(その4)