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サーバって感じでしょうか。メッセージを送信したら毎回接続を切断するようです。


続いて、下段のTcp inノードを確認すると、以下のように設定されています。
  • 種類:接続
  • ポート: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クライアントからメッセージを送信してみます。

コメント

このブログの人気の投稿

Execノードを使う

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

SendGridのX-SMTPAPIヘッダの使い方(Section Tags、Substitution Tags編)