如何在不使用Python等编程语言的情况下直接与WebSockets服务器通信?

时间:2014-01-26 21:16:23

标签: websocket

我想使用WebSockets连接到服务器,但是不想像Python一样复杂的环境,只是为了通过网络重复发送小块数据(这不是一台快速的计算机,Python有时需要一个明显的时刻每次初始化或两次)。

也就是说,WebSockets是一个足够复杂的协议 - 它包含透明的ping / pong,framing和其他(当然非常棒的)功能 - 实现足够的协议以从头开始构建可用的客户端需要很长时间

我正在寻找能够打开套接字,处理底层协议并让我处理我需要发送的数据的东西,有点像“websocket netcat”。

(背景信息:我需要从命令行与Chrome的基于WebSocket的远程调试服务器通信。)

编辑:到目前为止,我找到了this proof-of-concept example written in C which uses libcurl;在协议方面,它必须是开始使用cURL处理HTTP Keepalive等的最简单的方法(cURL本身还不说WebSockets),但由于某些原因,Chrome根本没有响应该程序的指令。我已经设法通过WireShark将相同的标题发送到Chrome远程调试器,但它仍然发送不同格式的数据。

Chrome的调试器的请求标头以81 ac 99 2f fa 22 e2 0d 97 ....开头,而C程序发送81 1f 7b 22 69 64 22 3a 31 ....81至少相同! :P猜我现在必须去学习二进制WebSocket协议......

我通过网络发送的实际JSON命令是{"id":1,"method":"Page.reload"},按this python reloader(我从中得到了想法)并通过this Ruby-based remote control library确认为正确的命令。< / p>

任何接受者? :P

2 个答案:

答案 0 :(得分:1)

库在发送数据后立即关闭连接,这就是您没有收到任何答案的原因。

}在您工作时不要调用该功能,因为它会关闭连接。

答案 1 :(得分:0)

  

我正在寻找可以打开套接字,处理底层协议并让我仅处理需要发送的数据的东西,例如“ websocket netcat”。

我的新工具websocat明确地广告为“ websocket netcat”。

nc -e类似物也受支持:您可以启动程序,它将以stdin / stdout连接到WebSocket。

使用Chrome调试端口的示例:

chromium --remote-debugging-port=9222&
ws=`curl -sg http://127.0.0.1:9222/json/new | grep webSocketDebuggerUrl | cut -d'"' -f4 | head -1`
echo '{"id":2,"method":"Page.navigate","params":{"url":"https://example.com"}}'  | websocat -n1 $ws