2016-12-01 2246 views
3

我创建了一个Node.JS应用程序,它提供了一个web套接字服务器(使用npm ws)。这个websocket会一直等到连接建立。一旦连接命中服务器,websocket就会执行一项工作。作业完成后,将通过套接字发送一条消息,然后关闭套接字。 此套接字按预期工作;已经使用另一个Node.JS脚本对其进行了测试。Linux Bash:如何打开一个websocket连接作为客户端

我怎么能连接到使用只有Linux 命令行工具网络插座? 我已经试过卷曲,如here所述。但是,我不能找出如何正确连接到我的WebSocket其在本地主机上运行:8088 /插座/

编辑: 我的问题已经被确定为another问题可能重复。但是,链接的问题只是询问是否有一种方法可以用curl来实现。我很高兴看到任何在bash上运行的解决方案。此外,答案的链接的问题是使用autobahn.ws

+1

可能的复制[如何打的WebSocket端点?](http://stackoverflow.com/questions/24704097/how-to- hit-the-websocket-endpoint) – xShirase

回答

3

试试这一个从这里的JavaScript文件: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 
+0

......我已经在我的问题中提到过了:P No seriousely:我无法让它与localhost一起工作。我收到一个HTTP/1.1 400错误请求 内容类型:text/html 对我的express.js网络服务器 – Brian

+0

哦,对不起!也许你需要自己处理更新请求呢?如果服务器只服务于ws协议?因为如果我理解正确,curl请求会尝试执行http并将其更​​新为ws协议 - 但是如果web服务器不接受http传入调用,则什么都不会发生http://stackoverflow.com/questions/18045352/ node-js-how-to-respond-an-upgrade-request –

+0

好吧,我想到了你说的话。我以前从未听说过这种升级机制。然而,这当然可能是它不起作用的原因;)所以我现在已经将我的node.js应用上传到在线云提供商。因此我现在有一个http url。我想我的express.js框架也可以在内部使用升级机制。我如何将我的路径和端口添加到curl命令? – Brian

相关问题