使用curl进行WebSocket服务器健康检查

seb*_*piq 5 curl websocket

我正在尝试使用curl.

curl --include --no-buffer \
    --header "Connection: Upgrade" \
    --header "Upgrade: websocket" \
    --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
    --header "Sec-WebSocket-Version: 13" \
    http://localhost:3000
Run Code Online (Sandbox Code Playgroud)

HTTP 101我发送一个 HTTP 请求来进行手工检查,并按预期收到:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: qGEgH3En71di5rrssAZTmtRTyFk=
Run Code Online (Sandbox Code Playgroud)

我的问题是,收到该响应后,curl 将挂起。

握手成功后有什么方法可以告诉curl退出吗?

Ber*_*tel 5

您可以使用Connection: close代替Connection: Upgrade来指定响应完成后应关闭连接:

curl --include --no-buffer \
    --header "Connection: close" \
    --header "Upgrade: websocket" \
    --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
    --header "Sec-WebSocket-Version: 13" \
    http://localhost:3000
Run Code Online (Sandbox Code Playgroud)