Node.js 为什么我能';无法从另一个客户端连接到服务器?

Node.js 为什么我能';无法从另一个客户端连接到服务器?,node.js,express,socket.io,Node.js,Express,Socket.io,大家好,我正在使用最新版本的NodeJS+express4+socket.io构建一个简单的webapp,基本上我无法解决的问题是,直到我从服务器的浏览器浏览到我的webapp,它才能正常工作,但是,当我试图从同一网络但在另一台pc上访问它时,index.html服务正常,但客户端无法连接到套接字,下面是一段代码: 服务器: var express = require('express'); var app = express(); var server = require('http').cr

大家好,我正在使用最新版本的NodeJS+express4+socket.io构建一个简单的webapp,基本上我无法解决的问题是,直到我从服务器的浏览器浏览到我的webapp,它才能正常工作,但是,当我试图从同一网络但在另一台pc上访问它时,index.html服务正常,但客户端无法连接到套接字,下面是一段代码:

服务器:

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var exec = require('child_process').exec, child;
var uptime;
var temp;
var sysOS;
var ramU;
var ramT;
var cpuUsage;

app.use(express.static(__dirname + '/bower_components'));
app.get('/', function(req, res, next) {
    res.sendFile(__dirname + '/index.html');
    console.log('Ok, Up and running on 8080');
});

io.on('connection', function(socket) {
    var infos;
    var interval =setInterval(function(){
        //Get Uptime
        child = exec("uptime -p | grep 'up ' | cut -d ' ' -f2-", function(error, stdout, stderr){
            uptime = stdout;
        });
        //Get Temperature
        child = exec("/opt/vc/bin/vcgencmd measure_temp | grep 'temp=' | cut -d '=' -f3,2-", function(error, stdout, stderr){
            temp = stdout;
        });
        //Get OS
        child = exec("cat /etc/os-release | grep 'PRETTY_NAME' | cut -d '=' -f2", function(error, stdout, stderr){
            sysOS = stdout;
        });
        //Get RAM USED
        child = exec("free -m | grep 'cache: ' | cut -d ' ' -f10", function(error, stdout, stderr){
            ramU = stdout;
        });
        //Get RAM TOTAL AVAILABLE
        child = exec("free -m | grep 'Mem: ' | cut -d ' ' -f12", function(error, stdout, stderr){
            ramT = stdout;
        });

        child = exec("top -bn 1 | awk 'NR>7{s+=$9} END {print s/4}' | tr -d ' '", function(error, stdout, stderr){
            cpuUsage = stdout;
        }); 
        infos = [{Uptime: uptime}, {Temperature: temp}, {OS: sysOS}, {ramUsed: ramU}, {ratTot: ramT}, {CPU: cpuUsage}];
        socket.emit("infos", infos);

    }, 2000);
});

console.log('Ok, Up and running on 8080');
server.listen(8080);
$(document).ready(function(){
                var progressBar;
                var ramPerc;
                var cpu;
                var socket = io.connect("http://localhost:8080");
                socket.on("infos", function(infos) { 
                    cpu = infos[5].CPU.trim();
                    cpuPB = '<div class="progress"> <div class="progress-bar progress-bar-success" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width:'+cpu+'%"> '+cpu+'% CPU USATA </div> </div>';
                    $("#uptempo").html(infos[0].Uptime);
                    $("#divTemp").html(infos[1].Temperature);
                    $("#divOS").html(infos[2].OS);
                    ramPerc = (((infos[3].ramUsed*100))/(infos[4].ratTot)).toFixed(2);
                    progressBar = "<div class='progress'> <div class='progress-bar progress-bar-success' role='progressbar' aria-valuemin='0' aria-valuemax='100' style='width:"+ ramPerc + "%'>"+ ramPerc + " % RAM usata </div> </div>";
                    $("#divRam").html(progressBar);
                    $("#divCpu").html(cpuPB);
                });
            });
客户端:

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var exec = require('child_process').exec, child;
var uptime;
var temp;
var sysOS;
var ramU;
var ramT;
var cpuUsage;

app.use(express.static(__dirname + '/bower_components'));
app.get('/', function(req, res, next) {
    res.sendFile(__dirname + '/index.html');
    console.log('Ok, Up and running on 8080');
});

io.on('connection', function(socket) {
    var infos;
    var interval =setInterval(function(){
        //Get Uptime
        child = exec("uptime -p | grep 'up ' | cut -d ' ' -f2-", function(error, stdout, stderr){
            uptime = stdout;
        });
        //Get Temperature
        child = exec("/opt/vc/bin/vcgencmd measure_temp | grep 'temp=' | cut -d '=' -f3,2-", function(error, stdout, stderr){
            temp = stdout;
        });
        //Get OS
        child = exec("cat /etc/os-release | grep 'PRETTY_NAME' | cut -d '=' -f2", function(error, stdout, stderr){
            sysOS = stdout;
        });
        //Get RAM USED
        child = exec("free -m | grep 'cache: ' | cut -d ' ' -f10", function(error, stdout, stderr){
            ramU = stdout;
        });
        //Get RAM TOTAL AVAILABLE
        child = exec("free -m | grep 'Mem: ' | cut -d ' ' -f12", function(error, stdout, stderr){
            ramT = stdout;
        });

        child = exec("top -bn 1 | awk 'NR>7{s+=$9} END {print s/4}' | tr -d ' '", function(error, stdout, stderr){
            cpuUsage = stdout;
        }); 
        infos = [{Uptime: uptime}, {Temperature: temp}, {OS: sysOS}, {ramUsed: ramU}, {ratTot: ramT}, {CPU: cpuUsage}];
        socket.emit("infos", infos);

    }, 2000);
});

console.log('Ok, Up and running on 8080');
server.listen(8080);
$(document).ready(function(){
                var progressBar;
                var ramPerc;
                var cpu;
                var socket = io.connect("http://localhost:8080");
                socket.on("infos", function(infos) { 
                    cpu = infos[5].CPU.trim();
                    cpuPB = '<div class="progress"> <div class="progress-bar progress-bar-success" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width:'+cpu+'%"> '+cpu+'% CPU USATA </div> </div>';
                    $("#uptempo").html(infos[0].Uptime);
                    $("#divTemp").html(infos[1].Temperature);
                    $("#divOS").html(infos[2].OS);
                    ramPerc = (((infos[3].ramUsed*100))/(infos[4].ratTot)).toFixed(2);
                    progressBar = "<div class='progress'> <div class='progress-bar progress-bar-success' role='progressbar' aria-valuemin='0' aria-valuemax='100' style='width:"+ ramPerc + "%'>"+ ramPerc + " % RAM usata </div> </div>";
                    $("#divRam").html(progressBar);
                    $("#divCpu").html(cpuPB);
                });
            });
$(文档).ready(函数(){
var progressBar;
var-ramPerc;
变量cpu;
变量套接字=io.connect(“http://localhost:8080");
socket.on(“infos”,函数(infos){
cpu=infos[5].cpu.trim();
cpuPB=''+cpu+'%cpu USATA';
$(“#uptempo”).html(infos[0].Uptime);
$(“#divTemp”).html(infos[1]。温度);
$(“#divOS”).html(infos[2].OS);
ramPerc=((infos[3].ramUsed*100))/(infos[4].ratTot)).toFixed(2);
progressBar=“”+ramPerc+%RAM usata”;
$(“#divRam”).html(progressBar);
$(“#divCpu”).html(cpuPB);
});
});
当然,在客户端脚本中,我必须连接到,为什么同一网络上的另一个客户端无法连接到它?
我做错什么了?是否需要实现代理,如果需要,如何实现?

Localhost是一个仅引用127.0.0.1的内部地址,如果要从同一网络中的不同客户端访问文件,则必须找到服务器的IP(在终端上运行以下命令)

并更改服务器IP的localhost引用,即

您可能还需要向外部连接打开服务器防火墙