websocket协议不用多说了,大家应该很熟悉。在web开发领域是一个非常成熟的双向通信协议,目前物联网设备端开发也经常使用这个协议作为通信层,优点非常明显,可以做到服务端主动请求数据。
websocket调试工具也很多,今天我要介绍的这个工具叫websocat,纯Rust代码开发,是一个非常不错的命令行调试工具,截至本文编写时,版本达到1.11.0,Github上拥有5.3K的星标。
一、安装
一般有两种方式安装websocat:
第一种通过Github官网下载二进制文件,直接拿来作为命令运行即可另一种可以通过cargo install命令进行安装对于第一种方法,可以登录地址:
https://github.com/vi/websocat/releases
直接下载对应的可执行文件即可:
第二种方法,在命令行执行:
~$ cargo install websocat二、使用
websocat使用非常简单,分为服务端和客户端模式,比如通过以下命令,我们开启了一个简单的websocket服务端:
~$websocat-s127.0.0.1:4000Listeningonws://127.0.0.1:4000/通过如下客户端模式,连上该websocket服务器:
~$ websocat ws://127.0.0.1:4000此时,可以在终端输入任意字符串,敲回车,该字符串会发送到服务端打印显示:
以下客户端输入~$ websocat ws://127.0.0.1:4000hello以下服务端显示~$ websocat ws://127.0.0.1:4000hello当然,也可以将其它进程或者文件的数据发送到服务端:
以下客户端输入~$echo"hello world"| websocat ws://127.0.0.1:4000以下服务端显示~$ websocat ws://127.0.0.1:4000hello world三、交叉编译
源码下载路径:
https://github.com/vi/websocat
websocat是纯Rust代码写的单体应用,通过Rust交叉编译的方式很容易将它编译成目标平台的工具,这对于设备端开发的朋友就特别友好。需要注意的是,websocat依赖openssl,连接openssl目标库配置起来会稍显麻烦,对于不需要ssl支持的朋友,可以在代码中将ssl的依赖去掉:
[features] crypto_peer = ["chacha20poly1305","argon2", ]default= ["signal_handler","tokio-process","unix_stdio","windows_named_pipes","ssl",//把改行ssl默认依赖去掉] prometheus_peer = ["prometheus","prometheus-metric-storage", ]以我自己的目标平台为例,本人使用的gcc是arm-linux-gnueabihf-gcc 4.9.2版本,首先需要将arm-linux-gnueabihf-gcc命令在当前环境中生效可用。可用之后,通过如下命令编译即可(Rust交叉编译环境在此不赘述,可以网上搜索相关资料):
~$ cargo build--target armv7-unknown-linux-musleabihf --release将会生成target/armv7-unknown-linux-musleabihf/release/websocat可执行程序,将此可执行程序下载到目标平台即可正常使用。
最后要说的是,websocat功能还是挺多的,以上只是最基础功能,它还支持tcp代理、socks5代理等等,大家可以通过帮助信息自行摸索高级功能。