Я использую 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>