如何点击WebSocket端点?

时间:2014-07-11 18:22:33

标签: javascript curl websocket

我看到有websocket端点可以通过Java测试来处理鳍。在日志中我看到了

Connecting to: ws://127.0.0.1:8080/76f48a44-0af8-444c-ba97-3f1ed34afc91/tweets  

就像任何其他REST API一样,我想通过浏览器或卷曲来点击它,但当我这样做时,我会看到

➜  tweetstream git:(master) ✗ curl ws://127.0.0.1:8080/b9b90525-4cd4-43de-b893-7ef107ad06c2/tweets  
curl: (1) Protocol ws not supported or disabled in libcurl  

➜  tweetstream git:(master) ✗ curl http://127.0.0.1:8080/b9b90525-4cd4-43de-b893-7ef107ad06c2/tweets
<html><head><title>Error</title></head><body>Not Found</body></html>%  

有没有办法用browser / curl测试websocket API?

7 个答案:

答案 0 :(得分:9)

这对我有用:

$ 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 :(得分:7)

如果您的字面意思是测试websockets的实现,我发现Autobahn的测试套件非常有用:http://autobahn.ws/

如果您只想使用websocket进行面条,我建议您使用浏览器(如chrome)中的开发人员工具进行连接并发送/接收数据:

var ws = new WebSocket("ws://127.0.0.1:8080/76f48a44-0af8-444c-ba97-3f1ed34afc91/tweets");
ws.onclose = function() { // thing to do on close
};
ws.onerror = function() { // thing to do on error
};
ws.onmessage = function() { // thing to do on message
};
ws.onopen = function() { // thing to do on open
};
ws.send("Hello World");

答案 2 :(得分:2)

我必须使用此命令才能使其正常工作:

$ curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: echo.websocket.org" -H "Origin: http://www.websocket.org" -H "Sec-WebSocket-Version: 13" -H 'Sec-WebSocket-Key: +onQ3ZxjWlkNa0na6ydhNg==' http://www.websocket.org

我正在使用Jetty,如果我没有添加Sec-WebSocket-Version / Sec-WebSocket-Key不起作用。仅供记录。

答案 3 :(得分:1)

我写了一个类似WebSocket客户端的cURL。您可以通过此工具发送单个数据框(文本/二进制),然后关闭套接字。您还可以在初始HTTP升级过程中添加HTTP标头。

https://github.com/jussmen/WebSocket_cURL

答案 4 :(得分:0)

我用过这个并发现它非常简单

http://www.websocket.org/echo.html

答案 5 :(得分:0)

出于完整性考虑,我想添加自己的CLI工具:websocat

$ websocat wss://echo.websocket.org/
qwer
qwer
1234
1234

它不执行问题的“浏览器”部分,但在这种情况下应有效替代“ curl”。

答案 6 :(得分:0)

curl --include \
--no-buffer \
--header "Connection: Upgrade" \
--header "Upgrade: websocket" \
--header "Host: echo.websocket.org" \
--header "Origin: http://echo.websocket.org" \
--header "Sec-WebSocket-Version: 13" \
http://echo.websocket.org

如果您为 WebSocket 端点配置了额外的子协议,请添加标头:

--header "Sec-protocol: protocol-name"

替换 Origin、Host 和 endpoint 以使用您自己的服务器进行测试。如果您启用了基本身份验证,请像这样添加授权标头:

 --header "Authorization: Basic RVZCLVAxNzI2MzAzOv"