2014-03-13 81 views
-1

我在使用socket.io進行通信的單獨盒子上有2個node.js實例。儘管它們位於防火牆後面的同一網絡中,但我希望它們能夠使用SSL加密進行通信。通過服務器到服務器socket.io連接的SSL加密

下正常工作:

服務器1:

require("socket.io").listen(9000); 

服務器2:

require("socket.io-client").connect("wss://10.0.0.1:9000"); 

雖然我沒有提供任何密鑰對,所以這是怎麼回事嗎?通過指定wss來建立安全通道:?如果是這樣,如何,沒有任何鍵?

順便說一句,這是行不通......

require("socket.io-client").connect("https://10.0.0.1:9000"); 

(儘管HTTP:確實)

+0

你的HTTPS連接可能不工作,因爲你的服務器未配置爲HTTPS。 – Houseman

回答

-1

將WSS不會進行連接使用SSL。

在客戶端,也就是指定一個SSL連接方式有兩種:

  • 使用HTTPS像你這樣
require("socket.io-client").connect("https://10.0.0.1:9000"); 
  • 使用安全:true選項
require("socket.io-client").connect("10.0.0.1:9000",{secure: true}); 

或者你可以兩者都做,以確保:

require("socket.io-client").connect("https://10.0.0.1:9000",{secure: true}); 
+0

謝謝,但連接到https:不起作用。服務器端需要發生哪些事情才能讓websocket接受安全連接?我意識到你可以創建一個https服務器,並將其傳遞給socket.io的listen方法(如下所示),但我不想要https服務器,我需要一個安全套接字(tcp + ssl)。 – hacklikecrack

+0

var httpsServer = https.createServer(keys,handler).listen(443); require(「socket.io」)。listen(httpsServer); – hacklikecrack

+0

你需要一個http服務器來提供websockets(請參閱http://stackoverflow.com/questions/4590447/js-html5-websocket-connect-without-http-call) –