我有两个 socket.io 服务器在我的 node.js 项目上监听两个不同的端口。我将它们作为这样的 http 服务器运行。
我的服务器文件:
var server = require('http').createServer(app);
//server port are 5000
var io = require('socket.io').listen(server);
var io3 = require('socket.io').listen(5132);
在我的第一个客户端页面 /usrlist
var socket = io.connect('http://localhost:5000',{
reconnection: true,
reconnectionDelay: 5000,
reconnectionAttempts: 12
});
在我的客户端页面/playingroom
var socket = io.connect('http://localhost:5132');
然后我决定使用 https 使我的连接安全,所以我将代码更改为此
我的服务器文件:
const cors = require('cors');
app.use(cors({credentials: true, origin: true}));
var httpsOptions = {
key: fs.readFileSync('./app/certsandkeys/nwcertandkey/my-prvkey.pem'),
cert: fs.readFileSync('./app/certsandkeys/nwcertandkey/my-pubcert.pem')
};
var sctio = require('https').createServer(httpsOptions, app);
sctio.listen(443);
var sctio3 = require('https').createServer(httpsOptions, app);
sctio3.listen(5132);
//using the default port 443 instead of the port 5000
var io = require('socket.io').listen(sctio);
var io3 = require('socket.io').listen(sctio3);
在我的第一个客户端页面 /usrlist
var socket = io.connect('https://localhost',{
secure: true,
reconnection: true,
reconnectionDelay: 5000,
reconnectionAttempts: 12
});
在我的客户端页面/playingroom
var socket = io.connect('https://localhost:5132',{secure: true});
然后在运行我的代码之后,我的 javascript 代码开始给我一个错误,说我有未定义的 var,但我的 javascript 代码在从 http 更改为 https 之前运行良好,我测试了数百次,我确定我所有包含的文件 url 都已编辑从http到https,我的页面可以完美阅读,但我不知道为什么我的一个var只给我undefined,除了我的socket.io代码之外没有改变任何东西
更新:
今天运行我的代码 agian 之后,代码运行良好一次然后错误又回来了 agian 然后错误开始以随机方式来来去去????
错误按摩:
> jQuery.Deferred exception: $usercolor is not defined
> MakeMove@https://localhost/cssFiles/js/makemove.js:170:4
> CheckResult@https://localhost/cssFiles/js/guiMultiPlayer.js:62:9
> CheckAndSet@https://localhost/cssFiles/js/guiMultiPlayer.js:183:6
> NewGame@https://localhost/cssFiles/js/guiMultiPlayer.js:764:3
> @https://localhost/cssFiles/js/main.js:9:2
> e@https://localhost/js/jquery.min.js:2:29453
> l/</t<@https://localhost/js/jquery.min.js:2:29755 undefined
> jquery.min.js:2:31008
我在服务器上的邮政编码部分:
app.post('/getcolor', function (req, res, next) {
var lCol="";
if(req.body.MoveString !== null){
Move.setMoveUserId(req.user.id);
a.getColor(req.user.id,function(col){
res.json({"msg": col, "loggedin": "true"}); // <=== here you have a defined lCol
});
} else {
var output = {"msg": lCol, "loggedin": "true"}; // <=== here lCol always equals ""
res.json(output);
}
});
javascript邮政编码:
function UserColor() { // Is used to check which color the opponent has
var MoveString = BoardToFen();
$.ajax({
type:'POST',
url:'/getcolor',
data:{MoveString:MoveString},
dataType:'json',
cache: false,
success:function(data){
if (data.msg == "white"){
$usercolor=0;
console.log("usercolorusercolor",$usercolor);
} else{
console.log("thrusercolorusercolor",$usercolor);
$usercolor=1;
}
}
});
return $usercolor;
}
我希望任何愿意回答的人在将我的连接从 http socket.io 转换为 https 安全连接之前解释为什么我的代码工作正常,但是在转换之后我开始得到这个错误?