我已在本地计算机上成功实现了以下nodejs websocket服务器,但是当我尝试将其移至生产时,我无法连接(不确定是否需要服务器代码,但无论如何我都会包含):
var ws = require("nodejs-websocket");
var server = ws.createServer(function(conn){
console.log("New connection");
//conn.sendText("You are connected");
conn.on("text", function(str){
//conn.sendText(str.toUpperCase() + "!!!");
var inputOBJ = JSON.parse(str);
if(inputOBJ.TYPE === 'USERNAME'){
conn.username = inputOBJ.BODY;
}
if(inputOBJ.TYPE === 'MESSAGE'){
//console.log("Connected User: " + conn.username);
//console.log("Recipient: " + inputOBJ.RECIPIENT);
//console.log("Body: " + inputOBJ.BODY);
var userOnline = false;
server.connections.forEach(function(connection){
if(connection.username === inputOBJ.RECIPIENT){
userOnline = true;
var message = {};
message.TYPE = "USER";
message.BODY = inputOBJ.BODY;
connection.sendText(JSON.stringify(message));
}
});
if(!userOnline){
var message = {};
message.TYPE = "SYSTEM";
message.BODY = "User is not online";
conn.sendText(JSON.stringify(message));
}
}
});
conn.on("close", function(code, reason){
//console.log("Connection closed");
});
conn.on('error', function(err){
//console.log(err.stack);
});
}).listen(1337);
当我在我的服务器上运行该程序时,它的运行方式就好像一切正常。通过运行命令 netstat -lntu 检查端口后,我可以验证端口是否已打开。以下是显示端口1337的行:
tcp 0 0 0.0.0.0:1337 0.0.0.0:* LISTEN
如果我还能提供其他任何内容,请告诉我。截至目前,我不确定为什么它不接受连接???
答案 0 :(得分:0)
这结果证明了我正在测试的网络之一上设置的防火墙规则。当我从另一个网络连接时,一切都按预期运行。