无法连接到安全 socket.io 服务器:ERR_SSL_PROTOCOL_ERROR

spi*_*tus 6 javascript node.js socket.io

我正在尝试将socket.io与现有应用程序一起使用。我的应用程序在https://somedomain.com 上运行。它使用此代码连接到套接字 io 服务器:

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

    socket.on('message', function (msg) {
      // my msg
    });
  });
Run Code Online (Sandbox Code Playgroud)

我的 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() {});
});
Run Code Online (Sandbox Code Playgroud)

dupa 永远不会显示在服务器端和 Chrome 浏览器控制台中,我收到:

GET https://localhost:3456/socket.io/?EIO=3&transport=polling&t=1412901063154-0 net::ERR_SSL_PROTOCOL_ERROR 
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到这个可能的工作?

xSh*_*ase -2

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

首先,将安全参数添加到您的客户端(对于 https 来说可能是多余的,但 SSL+socket.io 有时会做奇怪的事情):

var socket = io.connect('https://localhost', {secure: true});
Run Code Online (Sandbox Code Playgroud)

然后,您的套接字也需要安全:

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});
Run Code Online (Sandbox Code Playgroud)