2016-03-18 4 views
-1

Привет всем Я создаю простой webapp, используя NodeJS + express4 + socket.io на последней доступной версии, в основном проблема, которую я не могу решить, заключается в том, что пока я не просматриваю свой веб-браузер из браузера на сервере он работает отлично, но когда я пытаюсь подключиться к нему из той же сети, но на другом ПК index.html обслуживается хорошо, но клиент не может подключить разъем tonthe, здесь фрагмент кода:Почему я не могу подключиться от другого клиента к серверу?

SERVER :

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); 
       }); 
      }); 

В сценарии клиента, конечно, мне нужно подключиться к http://localhost:8080/, так почему от другого клиента в той же сети нельзя подключиться к нему? Я делаю что-то не так? Нужно ли мне реализовать прокси-сервер, если да, как?

ответ

1

Localhost внутренний адрес только что ссылки 127.0.0.1, если вы хотите получить доступ к файлам из другого клиента в той же сети, вы должны найти IP вашего сервера (выполните следующее на терминале)

ipconfig getifaddr en0 

и изменить ссылку локального хоста для IP-адреса сервера, то есть http://xx.xx.xx.xx:8080

Возможно, вам также потребуется открыть межсетевой экран сервера для внешних подключений.

Смежные вопросы