curl 访问websocket服务
时间: 2023-06-14 16:06:27 浏览: 211
curl 和 socket
5星 · 资源好评率100%
使用curl访问WebSocket服务需要进行两步操作:
1. 发送HTTP请求,升级到WebSocket协议
2. 发送WebSocket消息
下面是一个例子,假设WebSocket服务运行在`ws://localhost:8080`:
1. 发送HTTP请求,升级到WebSocket协议
```bash
curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: localhost:8080" -H "Origin: http://localhost:8080" http://localhost:8080/ws
```
其中,`-i`表示输出HTTP响应头,`-N`表示启用无缓冲模式,`-H`表示设置HTTP头。`Connection: Upgrade`和`Upgrade: websocket`表示升级到WebSocket协议,`Host`和`Origin`是WebSocket协议所需要的HTTP头。
2. 发送WebSocket消息
```bash
echo "Hello, WebSocket!" | sed 's/.*//" | sed 's/\"//g' | xxd -r -p | curl -N -s -i -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: localhost:8080" -H "Origin: http://localhost:8080" -H "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" -H "Sec-WebSocket-Version: 13" http://localhost:8080/ws
```
其中,`echo`命令用于生成WebSocket消息,`sed`命令用于去掉引号和换行符,`xxd`命令用于将消息转换为十六进制格式。`-r`表示将十六进制格式的消息转换为二进制格式,`-p`表示不输出地址和ASCII码。`-s`表示静默模式,不输出HTTP响应头和错误信息。`Sec-WebSocket-Key`是WebSocket协议所需要的HTTP头,`Sec-WebSocket-Version`表示WebSocket协议的版本号。
如果WebSocket服务需要进行身份验证,则可以添加`Authorization`头:
```bash
curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: localhost:8080" -H "Origin: http://localhost:8080" -H "Authorization: Bearer <token>" http://localhost:8080/ws
```
其中,`<token>`是身份验证所需要的令牌。
阅读全文