web-dev-qa-db-ja.com

Linux Bash:クライアントとしてwebsocket接続を開く方法

Webソケットサーバーを提供するNode.JSアプリケーションを作成しました( npm ws を使用)。このWebsocketは、接続が確立されるまで待機します。接続がサーバーに到達すると、websocketはジョブを実行します。ジョブが完了すると、メッセージがソケットを介して送信され、ソケットが閉じられます。このソケットは期待どおりに機能します。別のNode.JSスクリプトで既にテスト済みです。

どうすればWebソケットに接続 linuxのみを使用してコマンドラインツールを使用できますか? here のように、すでにcurlを試しました。ただし、localhost:8088/socket /で実行されるWebSocketに適切に接続する方法がわかりません。

編集:私の質問は another 質問の重複の可能性があると特定されました。ただし、リンクされた質問は、curlでそれを行う方法があるかどうかを尋ねるだけです。 bashで動作する解決策があれば嬉しいです。また、リンクされた質問に対する答えは、autobahn.wsを使用したjavascriptファイルです

9
Brian

私のツール websocat はこのために特別に設計されています。

websocat ws://your_server/url

サーバーに接続してデータを交換できます。デフォルトでは、各行はWebSocketテキストメッセージになり、その逆も同様です。

Linuxでは、readlineを使用してより快適にプレイできます。

rlwrap websocat ws://your_server/url.

CLI Websocketクライアントはこれだけではありません。 「ws」および「wscat」プロジェクトもあります。

8
Vi.

ここからこれを試してください: WebSocketエンドポイントにアクセスする方法

$ curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: echo.websocket.org" -H "Origin: http://www.websocket.org" http://echo.websocket.org

彼がここから持っている: http://www.thenerdary.net/post/24889968081/debugging-websockets-with-curl

このサイトのコンテンツを将来のために引用するには:

これらのフラグは言う:

  1. 出力でヘッダーを返す
  2. 応答をバッファリングしないでください
  3. この接続がHTTPから他の何かにアップグレードする必要があるヘッダーを設定します
  4. この接続がWebSocket接続にアップグレードするために必要なヘッダーを設定します
  5. ヘッダーを設定してホストを定義します(後のWebSocket標準で必要)
  6. ヘッダーを設定してリクエストの発信元を定義します(後のWebSocket標準で必要)

WebSocketが機能している場合は、次を返します。

$ curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: echo.websocket.org" -H "Origin:http://www.websocket.org" http://echo.websocket.org
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: http://www.websocket.org
WebSocket-Location: ws://echo.websocket.org/
Server: Kaazing Gateway
Date: Mon, 11 Jun 2012 16:34:46 GMT
Access-Control-Allow-Origin: http://www.websocket.org
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Headers: authorization
Access-Control-Allow-Headers: x-websocket-extensions
Access-Control-Allow-Headers: x-websocket-version
Access-Control-Allow-Headers: x-websocket-protocol
7
Stefan Rein