投稿

1月, 2022の投稿を表示しています

Tcpノードを使う(その2)

イメージ
ここのところずっと Node-RED のサンプルを見ながら各ノードの使い方を確認しています。 頭出しの記事はこちら をご確認ください。今回はTcpノードの続きです。 前回の記事 と同様、TCPサーバとクライアントの間でメッセージを送受信しますが、今回はメッセージの流れる方向が逆で、TCPクライアントからサーバにメッセージを送信します。 TCPクライアントからサーバにメッセージを送信する 確認するサンプルは、「 読み込み > サンプル > flows > node-red > network > tcp > 02 - Connect to tcp in server 」です。 上段のTcp outノードを確認すると、以下のように設定されています。 種類:接続 ホスト:localhost ポート:1882 メッセージを送信するたびに接続を切断:ON localhostのポート番号1882番に接続してメッセージを送信するクライアントのフローです。メッセージを送信したら接続を切断します。 続いて、下段のTcp inノードを確認すると、以下のように設定されています。 種類:待ち受け ポート:1882 出力:単一文字列のペイロード こちらは、TCPクライアントからの接続を待ち受けるサーバサイドのフローです。 Injectノードを実行すると、デバッグパネルに「 Hello World! 」のログが出力されます。上段のフローで実装したクライアントから下段のフローで実装したTCPサーバにメッセージを送信します。サーバが受信したメッセージをログ出力しています。 一応、動いてはいますが、これだけだとNode−RED内で完結してしまっているのでTCPサーバが動いている実感が湧きません。そこで、TelnetクライアントでTCPサーバに接続してメッセージを送信してみます。 と、その前に、下段のTcp inノードの出力設定を以下のように「ストリーム」に変更しておきます。 この状態で、Telnetクライアントから「 localhost 1882 」に接続して適当な文字列(ここでは「 hello tcp! 」)を入力してEnterキーを押下します。 $ telnet -a localhost 1882 Trying 127.0.0.1... Connected t

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

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サ

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

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

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

イメージ
ここのところずっと Node-RED のサンプルを見ながら各ノードの使い方を確認しています。 頭出しの記事はこちら をご確認ください。年が明けましたが、新年の展望もご挨拶もなく、引き続きマシーンのようにサンプルフローを見ていきます。今回はHTTPノード最終回です。 Cookieを扱う 確認するサンプルは、「 読み込み > サンプル > flows > node-red > network > http > 07 - Working with cookies 」です。フローは3段階に別れており、それぞれ以下の動作をします。 /hello-cookie:cookieデータにアクセスしてHTMLに埋め込んで返却 上段は、cookieの中身をHTMLに埋め込んで返すフローです。説明文にある通りブラウザから「 http://localhost:1880/hello-cookie 」にアクセスすると以下のページが表示されます。 フローの中身を確認すると、Functionノードで「 msg.req.cookies 」の内容をJSON文字列化してmsg.payloadに代入しています。msg.payloadは、この後のTemplateノードでHTMLに埋め込まれます。 /hello-cookie/add:cookieにデータを追加 ブラウザ画面上に表示されている「 Add a cookie 」リンク(http://localhost:1880/hello-cookie/add)を選択すると中段のフローが開始され、cookieに適当なキーバリュー値が追加されます。 中段のFunctionノードを確認すると、「 msg.cookie 」にキーとしてランダム生成した文字列と、値として現在時刻を登録しています。 その後、ブラウザにリダイレクトを指示するため、「 statusCode = 302 」、「 msg.headers.location =  /hello-cookie 」を設定して返却します。これにより最初のフローに戻ります。 /hello-cookie/clear:cookieをクリア ブラウザ画面上で「 Clear Cookies 」リンク(http://localhost:1880/hello-cookie/clear)を選択すると下段のフ