概要
このドキュメントでは、WebSocketまたはHTTPプロトコルを使用してサーバーと通信する方法について説明します。このような通信は、通常、ウェブブラウザとインターネット上のウェブサイトの間で行われます。
HTTPコマンドはAximmetryの制御にも使用できます。詳細は以下のドキュメントで説明されています: HTTP経由でのAximmetryの外部制御
WebSocketとHTTP、その違いは?
WebSocketは低遅延と双方向通信プロトコルが特徴で、データが同時に双方向で送信可能です。接続は一度だけ確立されるため、クライアントとサーバー間の効率的なリアルタイムインタラクションを実現します。
一方、HTTPは一方向の通信方式を採用しています。各リクエストごとに新しい接続を確立する必要があり、追加のヘッダーやメタデータによりオーバーヘッドが増加します。HTTPは、RESTful APIのようなリクエスト-レスポンス形式でサーバーからリソースやデータを取得するのに適しています。
Websocket Client
Websocket Clientモジュールを使用してサーバーと通信できます。
接続設定時のデバッグを容易にするため、Text Peekerモジュールを使用してWebsocket Clientを動画として公開することをおすすめします:
入力ピン
- 接続
- ターゲットサーバーに接続します。データを送信するには、このピンをオンにする必要があります。
- モジュールがサーバーに正常に接続されると、Connected出力ピンがTrueになります。
- URL
- サーバーのURLアドレスで、プロトコルプレフィックスとドメイン名で構成されます。ドメイン名の後にポート番号、パス、その他の接尾辞をオプションで追加できます。
- WebSocket URLのプロトコルプレフィックスは「ws://」であることが多く、「http://」ではなく「ws://example.com/socket」のように指定します。ここで「ws」はWebSocketプロトコルを使用することを示します。ただし、URLに「http://」プレフィックスが付いたものがWebSocketとして機能しないわけではありません。
- また、このモジュールはセキュア接続をサポートしており、 「wss://」 のような形式で指定できます。ここで 「s」 はセキュア(暗号化)接続を意味し、 「https://」 と同様の機能を提供します。
- NOTE: URL Compose と URL Decompose モジュールを使用すると、URL アドレスを簡単に組み立てたり解析したりできます。
- Socket IO モード
- ターゲットサーバーが通信に Socket.IO ライブラリを使用している場合、Socket.IO モードを有効にします。
- Data ピンに定義するテキストは、次のようにフォーマットする必要があります:[「eventname」, mydata]
- ここで、mydata 部分は JSON 形式で指定できます。例:[「message」, {「something」: 『Text』, 「otherthing」: 4.35}]。
- NOTE: Socket.IO は、WebSocket 通信に複数の機能と拡張機能を追加する JavaScript ライブラリです。
- NOTE: Socket.IO はバイナリモードをサポートしていません。Socket.IO の WebSocket プロトコルのみを使用します。
- NOTE: Aximmetryのコレクションデータタイプは、Collection To JSONモジュールを使用して簡単にJSONに変換できます。その後、Text Concat Multiモジュールを使用して、テキスト[「eventname」, ]にパースできます。
- バイナリモード
- テキストまたはバイト(バイナリ)データの送信を切り替えます。
- データとデータバイト
- ターゲットサーバーに送信されるメッセージのテキストまたはバイトデータ。テキストの代わりにバイトデータを使用するには、バイナリモードピンをオンにします。
- 自動送信と送信
- メッセージの送信は2つの方法で行えます。Sendピンでトリガーすることで、特定の時間に送信できます。または、自動送信をオンにすると、データ値が変更されるたびに自動的に送信されます。
出力ピン
- 受信と受信バイト
- サーバーから受信したデータです。テキストの代わりにバイトデータを受信するには、バイナリモードピンをオンにします。
- バイトデータを受信する際、これらのモジュールはデータを変換できます:バイトからテキスト、バイトからスカラー、バイトからベクター、バイトから整数。
- 受信
- 新しいデータの到着を示します。
- 接続
- 接続ピンは、モジュールがターゲットサーバーとの接続を確立した際にTrueになります。
HTTPリクエスト
Flow Editor でHTTPリクエストモジュールを使用してサーバーと通信できます。
World Wide Web上の任意のウェブページ(例 https://www.wikipedia.org/)に対してHTTPリクエストを送信でき、通常はリクエストしたウェブページのHTMLコンテンツが返されます。
HTTP Request モジュールは、Post ピンがオンになっていない限り、GET メソッドを使用してリクエストを送信します。
接続設定時のデバッグを容易にするため、Text Peeker モジュールを使用して HTTP Request を動画として表示することをおすすめします:
入力ピン
- URL
- サーバーの URL ウェブアドレスで、プロトコル接頭辞とドメイン名で構成されます。ドメイン名の後にポート、パス、その他の接尾辞などの追加要素を指定できます。例: http://www.example.com:8080/path/to/resource
- また、このモジュールはセキュア接続をサポートしており、URL を 「https://」 と指定することでセキュア(暗号化)接続を指定できます。
- NOTE: URL Compose と URL Decompose モジュールを使用すると、URL アドレスを簡単に組み立てたり解析したりできます。
- ヘッダー
- HTTPヘッダーは、リクエスト、クライアント、またはサーバーの動作に関する追加情報を伝達します。
- カスタムサーバーを使用している場合、ヘッダーに何も指定する必要はありません。ワールドワイドウェブ上のサーバーをターゲットにしている場合、リクエストを適切に処理し受け入れるために、関連するヘッダーをリクエストに含めることが重要です。
- 例:
Accept-Language: en-US,en;q=0.5
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36
ここで「User-Agent:」は、リクエストを送信するユーザーエージェントを識別します。上記の例では、ウェブブラウザアプリケーションによって生成されるユーザーエージェントを使用しています。一部のウェブサイトでは、ウェブブラウザからのリクエストのみを受け付けるため、この情報が必須です。さらに、一部のウェブサイトでは、ヘッダーに追加の情報やより完全なインタラクションを要求し、ウェブブラウザ以外からのトラフィックを拒否しようとする場合もあります。
「Accept-Language:」 レスポンスの優先言語を指定します。サーバーが送信するコンテンツの言語バージョンを決定するのに役立ちます。
- POST と POST データ
- POST メソッドは、指定されたリソースにエンティティを送信し、サーバーの状態変更や副作用を引き起こすことがあります。
- POSTリクエストを送信した場合、サーバーはアプリケーションの設計に応じてさまざまな種類のコンテンツで応答する可能性があります。新しいウェブページを返す場合はHTMLですが、JSON、XML、または他のデータ形式の場合もあります。JSONやXMLの場合、テキストを █ Collection pin data type にパースするには、JSON TextまたはXML Textモジュールを使用できます。
- リクエスト
- リクエストメッセージをターゲットサーバーに送信します。または、オートリクエストを有効にできます。詳細は以下を参照してください:
- オートリクエストとオートインターバル
- オートリクエストは定期的にリクエストを送信します。期間の長さは、オートインターバルピンで秒単位で設定されます。
出力ピン
- テキスト
- サーバーから受信したテキストデータ。
- 画像
- サーバーから受信した画像データ。
- タイプ
- テキストまたは画像データが受信された形式。
テストと例
受信したデータが長いテキストの場合、Text Peekerの代わりにText Imageモジュールを使用して、長いフォーマットされたテキストを出力できます:
応答がHTML形式の場合、Text Exporterモジュールを使用して、受信したHTMLを.htmlファイル拡張子で簡単に保存できます。
このファイルを任意のウェブブラウザで開くことができます。これにより、ウェブブラウザで取得する応答と同じかどうかを確認できます。
注:上記のスクリーンショットでは、Text Changed モジュールを追加し、Text Exporter モジュールの「自動番号付け」ピンをオフにしました。これにより、新しい HTML テキストが受信された際にエクスポートされた HTML ファイルが上書きされます。これにより、HTML ファイルをブラウザで開いた状態で Aximmetry で新しい HTML テキストを受信した場合、ブラウザをリフレッシュ(F5)するだけで新しい内容を表示できます。
HTTPリクエストをRSSフィードで使用する例は、Tutorialsパッケージに2つあります:[Tutorials]:MOS\Crawl\Crawl_RSS_Vertical_Subtext.xcomp と [Tutorials]:MOS\Crawl\Crawl_RSS.xcomp
注:RSSフィードは常にXML形式でフォーマットされているため、受信したテキストにXML Textモジュールを適用することで、Collectionデータ構造内の任意のRSSフィードを簡単に処理できます。