2016-12-01 88 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

相關問題