Help us understand the problem. What is going on with this article?

CLIのWebsocketクライアントを作ってみた

More than 3 years have passed since last update.

Websocketを使ったサーバを作ったときに、動作確認をJavaScriptで書くのが面倒なのでターミナル上でやりたいと思いました。

wscatwsshというツールが既にありますが、npmpythonをインストールしないとダメなのと、自分で作ってみたかったのでGoで実装しました。

https://github.com/morikuni/weso

つくったもの

wesoというコマンドを作りました。
telnet的に文字列を送受信できます。

https://github.com/morikuni/weso/releasesからバイナリをダウンロードして実行できます(動作未確認)。

使い方

wesoにURLを渡すことで接続されます。

$ weso ws://echo.websocket.org
> hello world
<< hello world
> how are you?
<< how are you?

ここでは、ws://echo.websocket.orgという送ったメッセージをそのまま返してくるサーバに接続しています。
>と表示されている行が送信した文字列で、<<と表示されている行がサーバから受信した文字列です。

wesoの特徴はテンプレートを使って文字列を送信できることです。
例えばJSON形式でデータを送りたいときに毎回{"name":"Gopher"}のように書くのは大変ですが、テンプレートを使うことで関数呼び出しのようにJSONを作成できます。

$ cat template.txt
{{define "Name"}}{"name": "{{._1}}"}{{end}}
{{define "JSON"}}{"{{._1}}": "{{._2}}"}{{end}}

$ weso -template template.txt ws://echo.websocket.org
> .Name Gopher
<< {"name": "Gopher"}
> .JSON message Hello
<< {"message": "Hello"}

テンプレートファイルはGoのtemplateライブラリの形式です。
{{define "XXX"}}から{{end}}までが1つのテンプレートです。
テンプレートへの引数は._1,._2...._Nで取得することができます。

Websocketサーバの簡単な動作確認には便利だと思うのでよかったら使ってみてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした