带有HTTPS的套接字IO和节点给出了错误net :: ERR_INSECURE_RESPONSE

时间:2017-12-27 12:49:26

标签: node.js laravel express socket.io node-modules

我正在将Socket IO与Node和Laravel集成。

我已经完成了事件的监听,但是当我将我的代码移动到HTTPS服务器时,就出现了ptoblem。

关注错误信息:

  

GET   https://205.186.144.231:3002/socket.io/?EIO=3&transport=polling&t=M2NyN1a   净:: ERR_INSECURE_RESPONSE

我已经搜索了许多解决方案,并做出了所有可能的改变,但没有为我工作过。

以下是我的服务器端代码:

// socket.js

var https = require('https');

var io = require('socket.io')(https);
var fs = require('fs');

var Redis = require('ioredis');
var app = require('express')();

var redis = new Redis();

redis.subscribe('chatMessage');

var options = {
  ca: fs.readFileSync('./public/The_CA_bundle.pem'),
  key: fs.readFileSync('./public/mazau.key'),
  cert: fs.readFileSync('./public/mazau.cert'),
};

redis.on('message', function (channel, message) {
    console.log(channel + ' ' + message);
  });

https.createServer(options, app).listen(3002, '205.186.144.231');
console.log('Server running at 205.186.144.231:3002/');

在客户端我完成了以下代码: //客户端

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Socket</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="{{ asset('my_socket.js') }}"></script>
</head>
<body>
    <script>
        var socket = io('https://205.186.144.231:3002');    
    </script>
</body>
</html>

我通过键入节点套接字

来运行服务器

我不知道我错过了什么。至少一个单一的帮助将不胜感激。 感谢

enter image description here

1 个答案:

答案 0 :(得分:0)

我也遇到过同样的问题。以下是我提到的解决问题的步骤:

var app = require('express')();
var fs = require('fs');
var https = require('https');

var hskey = fs.readFileSync('certs/pri.key');
var hscert = fs.readFileSync('certs/cert.crt');
var ca = fs.readFileSync('certs/ca.crt');

var credentials = {
    ca:ca,
    key: hskey,
    cert: hscert,
    requestCert: false,
    rejectUnauthorized: false
};

var http = https.createServer(credentials,app);

对于您的情况,请检查密钥和证书文件的路径是否正确。就我而言,我创建了一个服务器js文件所在的文件夹,并将证书,密钥和ca文件放入其中。

然后在您的客户端中,尝试提供域名而不是像

这样的IP地址。
var socket = io("https://www.yourdomain.com:3002", {secure: true});

重新启动节点服务器并进行检查。