我正在将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>
我通过键入节点套接字
来运行服务器我不知道我错过了什么。至少一个单一的帮助将不胜感激。 感谢
答案 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});
重新启动节点服务器并进行检查。