node.js,socket.io仅在本地主机上工作,无法从内网访问

node.js,socket.io仅在本地主机上工作,无法从内网访问

我正在使用 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>

相关内容