Назад | Перейти на главную страницу

node.js, socket.io работает только на localhost, не может получить доступ из интрасети

Я использую node.js и socket.io для системы уведомлений в реальном времени. Я протестировал node.js и socket.io с помощью простого кода чата, он неплохо работает с localhost, но не может получить доступ к нему из другой системы, которая подключена локально к той же сети. Код моего сервера и клиента выглядит так:

server.js

var express = require('express')
 , app = express()
 , http = require('http')
 , server = http.createServer(app)
 , io = require('socket.io').listen(server);

 server.listen(8888);

и клиентский html index.html

<script src="http://localhost:8888/socket.io/socket.io.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>
    var socket = io.connect('http://localhost:8888');
</script>

Он работает в моем браузере с этим URL-адресом http://localhost/schat/index.html, но не работает, когда я пытаюсь подключиться из другой системы, используя свой ip 192.171.56.23/schat/index.html. Но все остальные файлы html работают нормально, ниже мой вывод netstat:

[root@localhost schat]# netstat -pan | grep 8888
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN        8068/node
tcp        0      0 127.0.0.1:8888          127.0.0.1:38273         ESTABLISHED 8068/node
tcp        0      0 127.0.0.1:38273         127.0.0.1:8888          ESTABLISHED 7990/firefox

После некоторых комментариев выше:

<script>
    var socket = io.connect('http://localhost:8888');
</script>

Чтобы иметь возможность запускать клиент Node на любом удаленном компьютере, вам нужно изменить localhost с фактический IP сервера

То же самое для:

<script src="http://localhost:8888/socket.io/socket.io.js"></script>