【问题标题】:Why can't I connect to my Node server?为什么我无法连接到我的 Node 服务器?
【发布时间】:2017-01-29 13:04:56
【问题描述】:

我一直在为朋友开发一个网络应用程序。在家里开发/测试它时,一切都很好。但是,当我尝试运行它时,在我朋友家安装了所有模块和所有东西时,它不起作用!

除了运行服务器的计算机之外,没有任何设备可以连接和查看网页。我唯一注意到的是his IP is 192.168.1.xmine is 192.168.0.x. 这会影响服务器的运行方式吗?代码如下:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var path = require('path');
var fs = require("fs");

function onwin(winner){
    fs.readFile('results.json', 'utf8', (err, data) => {
        if (err) throw err;
        var results = JSON.parse(data);
        console.log(typeof data);
        console.log(typeof results);
        var found = false;
        for (var i in results){
            console.log("I: "+i);
            console.log("Winner: "+winner);
            if (i==winner){
                results[winner] += 1;
                found = true;
            };
        };
        if (found==false){
            results[winner] = 1;
        };
        fs.writeFile('results.json', JSON.stringify(results), 'utf8', (err) => {
            if (err) throw err;
            console.log('It\'s saved!');
            console.log(results);
        });
    });
};

app.get('/', function(req, res){
  res.sendFile(path.join(__dirname, 'index.html'));
});
var players;
players = {p1: "", p2: "", p1score: 0, p2score: 0};
var draw = false;
var clients = 0;
io.on('connection', function(client){
      console.log("Client Connected");
      clients+=1
    client.on('displayname', function(data){
        if (players.p1 == ""){
            players.p1 = data;
            console.log(players.p1 + " is ready as player 1");
        }
        else if (players.p2 == ""){
            players.p2 = data;
            console.log(players.p2 + " is ready as player 2");
            io.emit("ready");
        };
    });
    client.on('mypoint', function(data){
        console.log(data + " scored a point");
        if (data==players.p1){players.p1score+=1;}
        else if (data==players.p2){players.p2score+=1;};
        if (draw==false){
            if ((players.p1score+players.p2score)%2==0){
                io.emit("changeserver");
            };
        };
        if (players.p1score==10){
            if (players.p2score==10){draw = true; io.emit("changeserverdraw");}
        };
        if (draw==false){
            if (players.p1score==11){io.emit("winner", players.p1); console.log(players.p1+ " wins"); onwin(players.p1); players.p1score = 0; players.p2score = 0;}
            else if (players.p2score==11){io.emit("winner", players.p2); console.log(players.p2+ " wins"); onwin(players.p2); players.p1score = 0; players.p2score = 0;};
        }
        else{
            if (players.p1score-players.p2score==2){io.emit("winner", players.p1); console.log(players.p1+ " wins"); onwin(players.p1); players.p1score = 0; players.p2score = 0; draw = false;}
            else if (players.p2score-players.p1score==2){io.emit("winner", players.p2); console.log(players.p2+ " wins"); onwin(players.p2); players.p1score = 0; players.p2score = 0; draw = false;};
        };
        io.emit('pointreturn', players.p1score, players.p2score)
    });
  client.on('disconnect', function(){
      console.log("Client Disconnected");
      clients = clients - 1;
      if (clients<2){players.p1 = ""; players.p2 = ""; players.p1score = 0; players.p2score = 0; io.emit("reset");};
    });
});
http.listen(3000, '0.0.0.0', function() {
    console.log('Listening to port:  ' + 3000);
});

任何帮助表示赞赏。

谢谢。

【问题讨论】:

  • 所以当你说它不起作用时,你的意思是什么?与http服务器的连接不起作用是吗?
  • 是的。尝试连接到服务器时,网页不会在服务器以外的任何设备上加载。

标签: javascript node.js sockets io server


【解决方案1】:

如果运行应用程序的计算机可以从中提取页面或按预期调用函数,而网络上的其他计算机则不能,it is most likely due to a firewall config on the box or on the network, or else an antivirus app on the box。检查并查看这些设置是什么,并确保运行应用程序的端口未被阻止。

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 2011-10-11
    • 2019-05-17
    • 2015-11-22
    • 2018-10-27
    • 2021-09-18
    • 2014-04-28
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多