Tcpノードを使う(その1)
ここのところずっとNode-REDのサンプルを見ながら各ノードの使い方を確認しています。頭出しの記事はこちらをご確認ください。今回からTcpノードを見ていきます。ざっと見た感じ、サンプルフローの構成はWebSocketノード似ており、TCPサーバとクライアント間でメッセージの送受信ができます。
TCPクライアントにメッセージを送信する
確認するサンプルは、「読み込み > サンプル > flows > node-red > network > tcp > 01 - Connect to tcp out server」です。Node-RED上で動作するTCPサーバからクライアントにメッセージを送信します。
上段のTcp outノードを確認すると、以下のように設定されています。
- 種類:待ち受け
- ポート:1881
- メッセージを送信するたびに接続を切断
ポート番号1881番で待ち受けるTCPサーバって感じでしょうか。メッセージを送信したら毎回接続を切断するようです。
- 種類:接続
- ポート:1881
- ホスト:localhost
- 出力:単一文字列のペイロード
こちらは、TCPサーバに接続するクライアントサイドのフローでしょうか。
Injectノードを実行すると、デバッグパネルに「Hello World!」のログが出力されます。上段のフローでポート1881番で待ち受けるTCPサーバにメッセージを送信して、下段のフローで受信したメッセージをログ出力しています。イメージ的には、上下段のフローの間にTCPサーバがいて、Node-REDのフロー上でメッセージの送信と受信ができたということになります。
一応、動いてはいますが、これだけだとNode−RED内で完結してしまっているのでTCPサーバが動いている実感が湧きません。そこで、TelnetクライアントでTCPサーバが送信するメッセージを受信してみます。Telnetクライアントでlocalhost:1881に接続します。
$ telnet -a localhost 1881 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.
この状態でさきほどと同様Injectノードを実行すると、以下のようにTelnetクライアント上に「Hello, World!」の文字列が出力され、接続が切断されます。
$ telnet -a localhost 1881 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Hello, World!Connection closed by foreign host. $
以上で、TCPサーバが送信するメッセージをTelnetクライアントで受信できることが確認できました。
まとめ
ここまで確認したことを一旦まとめます。
- Tcp outノードの種類を「待ち受け」に設定すると、TCPクライアントの接続を待ち受けるサーバになります
- Tcp inノードの種類を「接続」に設定すると、サーバからメッセージを受信するクライアントになります
次回は、TCPクライアントからメッセージを送信してみます。
コメント
コメントを投稿