Node.js 带有HTTPS的套接字IO和节点给出错误net::ERR_unsecure_响应
我正在将Socket IO与Node和Laravel集成 我已经完成了事件的侦听,但是当我将代码移动到HTTPS服务器时,出现了问题 随后显示错误消息: 得到 net::错误\u不安全\u响应 我在谷歌上搜索了很多解决方案,做出了所有可能的改变,但没有一个对我有用 以下是我的服务器端代码: //socket.jsNode.js 带有HTTPS的套接字IO和节点给出错误net::ERR_unsecure_响应,node.js,laravel,express,socket.io,node-modules,Node.js,Laravel,Express,Socket.io,Node Modules,我正在将Socket IO与Node和Laravel集成 我已经完成了事件的侦听,但是当我将代码移动到HTTPS服务器时,出现了问题 随后显示错误消息: 得到 net::错误\u不安全\u响应 我在谷歌上搜索了很多解决方案,做出了所有可能的改变,但没有一个对我有用 以下是我的服务器端代码: //socket.js var https = require('https'); var io = require('socket.io')(https); var fs = require('fs');
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>
插座
变量套接字=io('https://205.186.144.231:3002');
我通过键入节点套接字运行服务器
我不知道我错过了什么。至少需要一个人帮忙。
谢谢
我也经历过同样的问题。下面我将介绍解决我的问题的步骤:
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});
重新启动节点服务器并进行检查