2014-10-10 232 views
1

我試圖在現有應用程序中使用socket.io。我的應用程序在https://somedomain.com上運行。它使用此代碼連接到插座IO服務器:無法連接到安全的socket.io服務器:ERR_SSL_PROTOCOL_ERROR

var socket = io('https://localhost:3456/'); 
    socket.on('connect', function() { 
    socket.send('hi'); 

    socket.on('message', function (msg) { 
     // my msg 
    }); 
    }); 

我socket.io服務器驗證碼聽傳入的連接:

var io = require('socket.io').listen(3456); 

io.sockets.on('connection', function(socket) { 
    console.log("dupa"); 
    socket.on('message', function() {}); 
    socket.on('disconnect', function() {}); 
}); 

DUPA永遠不會顯示在服務器端,並在Chrome瀏覽器控制檯我收到:

GET https://localhost:3456/socket.io/?EIO=3&transport=polling&t=1412901063154-0 net::ERR_SSL_PROTOCOL_ERROR 

我怎樣才能得到這可能工作?

回答

0

您的套接字服務器未使用SSL。

首先,安全參數添加到您的客戶端(也許冗餘與HTTPS但SSL + socket.io有時確實有點奇怪):

var socket = io.connect('https://localhost', {secure: true}); 

然後,你需要你的插座是安全的太:

var privateKey = fs.readFileSync('YOUR SSL KEY').toString(); 
var certificate = fs.readFileSync('YOUR SSL CRT').toString(); 
var ca = fs.readFileSync('YOUR SSL CA').toString(); 

var io = require('socket.io').listen(3456,{key:privateKey,cert:certificate,ca:ca}); 
+0

嗯在哪裏可以找到'YOUR SSL KEY'等?我運行的應用程序位於我的IIS上的窗口中,但配置爲運行https:somedomain.com,身份未驗證(https://在瀏覽器url行中被刪除)。我希望我在這裏有意義。 – spirytus 2014-10-10 00:54:39

+0

這將在你的文件中的某處,我不知道IIS如何存儲它。密鑰,ca和cert都是文件 – xShirase 2014-10-10 00:56:10