我正在使用 node.js 和 socket.io 实现实时通知系统。我已经使用简单的聊天代码测试了 node.js 和 socket.io,它在本地主机上运行良好,但无法从使用同一网络本地连接的另一个系统访问它。我的服务器和客户端代码如下所示:
server.js
var express = require('express')
, app = express()
, http = require('http')
, server = http.createServer(app)
, io = require('socket.io').listen(server);
server.listen(8888);
和客户端 htmlindex.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
答案1
经过上述一些评论:
<script>
var socket = io.connect('http://localhost:8888');
</script>
为了能够在任何远程机器上运行 Node 客户端,你必须更改本地主机与服务器的实际IP
同样的事情:
<script src="http://localhost:8888/socket.io/socket.io.js"></script>