我正在将 Socket IO 与 Node 和 Laravel 集成。
我已经完成了事件监听,但是当我将代码移动到 HTTPS 服务器时,出现了问题。
下面是错误消息:
GET https://205.186.144.231:3002/socket.io/?EIO=3&transport=polling&t=M2NyN1a net::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>
我通过键入 Node 套接字来运行服务器
我不知道我错过了什么。至少有一个帮助将不胜感激。 谢谢
最佳答案
我也遇到过同样的问题。下面我提到解决我的问题的步骤:
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);
根据您的情况,请检查 key 和证书文件的路径是否正确。就我而言,我创建了一个服务器 js 文件所在的文件夹,并将证书、 key 和 ca 文件放入其中。
然后在您的客户端,尝试提供域名而不是 IP 地址,如
var socket = io("https://www.yourdomain.com:3002", {secure: true});
重新启动 Node 服务器并检查它。
关于node.js - 使用 HTTPS 的套接字 IO 和 Node 给出错误 net::ERR_INSECURE_RESPONSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47992505/