网上在线调试工具,一搜一大堆,为啥还要推荐这个(wscat)呢?
- 只能简单调试
- 需要在线测试,在数据敏感的时代,自己的数据给扔出去是否安全
- 特殊离线环境无法测试
安装
需要 node 环境
地址: https://github.com/websockets/wscat
clone下来或者直接下载
执行安装
npm install -g wscat
使用
wscat -h
Usage: wscat [options] (--listen | --connect )
Options:
-V, --version output the version number
--auth add basic HTTP authentication header (--connect only)
--ca specify a Certificate Authority (--connect only)
--cert specify a Client SSL Certificate (--connect only)
--host optional host
--key specify a Client SSL Certificate's key (--connect only)
--max-redirects [num] maximum number of redirects allowed (--connect only) (default: 10)
--no-color run without color
--passphrase [passphrase] specify a Client SSL Certificate Key's passphrase (--connect only). If you don't provide a value, it
will be prompted for
--proxy <[protocol://]host[:port]> connect via a proxy. Proxy must support CONNECT method
--slash enable slash commands for control frames (/ping [data], /pong [data], /close [code [, reason]])
-c, --connect connect to a WebSocket server
-H, --header set an HTTP header. Repeat to set multiple (--connect only) (default: [])
-L, --location follow redirects (--connect only)
-l, --listen listen on port
-n, --no-check do not check for unauthorized certificates
-o, --origin optional origin
-p, --protocol optional protocol version
-P, --show-ping-pong print a notification when a ping or pong is received
-s, --subprotocol optional subprotocol (default: [])
-w, --wait wait given seconds after executing command
-x, --execute execute command after connecting
-h, --help display help for command
展示几个常用操作
首先可以模拟 websocket 服务
wscat -l 6565 //执行完成之后,就会再本机的6565端口监听websocket
监听服务
然后另外再起一个终端,连接这个服务
wscat -c ws://localhost:6565
这时服务端会看到有客户端连接
再尝试发送消息到服务端
服务端收到消息
服务端给客户端响应
同样,客户端顺利收到服务端消息,完成双向通信
已经可以正常通信,由于小工具,不支持多客户端同时连接,需要注意一下。
以上使用起来跟在线服务没有任何区别
以下才是重点
生产环境,不会直接裸露一个ws服务出来,这样没有任何认证、鉴权是非常不安全的
如上几个工具是在线版的,随便找的,可以看到无法传输任何其他的认证信息,这时我的 websocket 服务恰恰又需要认证,就无法调试了
这时,wscat 就可以大显身手了
首先咱们使用普通方式连接
可以看到,现象是一致的,连接失败。而且原因也可以看到,缺少 token 参数
加入header参数 token,可以看到成功建立连接,并且可以正常发送消息
wscat 只提供了执行命令功能,但是对于维持心跳,周期执行场景支持不太友好,直接修改bin/wscat,即可支持自动执行ping,进行“保活”
周期执行指定命令
其他用法,大致同 curl 是相同的,各位小伙伴儿自己摸索吧,欢迎随时交流,最后再贴一下大佬的工具地址
https://github.com/websockets/wscat