Linux Bash:如何作为客户端打开 websocket 连接

新手上路,请多包涵

我创建了一个提供 Web 套接字服务器的 Node.JS 应用程序(使用 npm ws )。这个 websocket 一直等到建立连接。一旦连接到达服务器,websocket 就会执行一个作业。工作完成后,将通过套接字发送一条消息,然后关闭套接字。此套接字按预期工作;已经用另一个 Node.JS 脚本对其进行了测试。

如何仅使用 linux 命令行 工具 连接到 Web 套接字?我已经尝试过卷曲,如此 所述。但是,我不知道如何正确连接到在 localhost:8088/socket/ 上运行的 websocket

编辑: 我的问题已被确定为 另一个 问题的可能重复项。但是,链接的问题仅询问是否有办法使用 curl。我很高兴看到任何适用于 bash 的解决方案。此外,链接问题的答案是使用 autobahn.ws 的 javascript 文件

原文由 Brian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

我的工具 websocat 就是专门为此设计的。

 websocat ws://your_server/url

您可以与服务器连接并交换数据。默认情况下,每一行都成为 WebSocket 文本消息,反之亦然。

在 Linux 上,使用 readline 玩起来会更舒服:

 rlwrap websocat ws://your_server/url.

它不是唯一的 CLI websocket 客户端。还有“ws”和“wscat”项目。

原文由 Vi. 发布,翻译遵循 CC BY-SA 4.0 许可协议

从这里试试这个: How to hit the WebSocket Endpoint?

 $ curl -i -N  \
    -H "Connection: Upgrade"  \
    -H "Upgrade: websocket"  \
    -H "Host: echo.websocket.org"  \
    -H "Origin: http://www.websocket.org"  \
    http://echo.websocket.org

他从这里得到的: http ://www.thenerdary.net/post/24889968081/debugging-websockets-with-curl

为将来引用本站的内容:

那些旗帜说:

  1. 在输出中返回标题
  2. 不要缓冲响应
  3. 设置此连接需要从 HTTP 升级到其他内容的标头
  4. 设置此连接需要升级为 WebSocket 连接的标头
  5. 设置一个标头来定义主机(后来的 WebSocket 标准要求)
  6. 设置一个标头来定义请求的来源(后来的 WebSocket 标准要求)

如果 websocket 正在工作,它应该返回以下内容:

 $ curl -i -N  \
    -H "Connection: Upgrade" \
    -H "Upgrade: websocket" \
    -H "Host: echo.websocket.org" \
    -H "Origin:http://www.websocket.org"  \
    http://echo.websocket.org

HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: http://www.websocket.org
WebSocket-Location: ws://echo.websocket.org/
Server: Kaazing Gateway
Date: Mon, 11 Jun 2012 16:34:46 GMT
Access-Control-Allow-Origin: http://www.websocket.org
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Headers: authorization
Access-Control-Allow-Headers: x-websocket-extensions
Access-Control-Allow-Headers: x-websocket-version
Access-Control-Allow-Headers: x-websocket-protocol

原文由 Stefan Rein 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题