【发布时间】:2017-04-23 16:31:47
【问题描述】:
嗯,我希望这个问题不是愚蠢的或重复的。我保证我已经研究和测试了很多。
我的 VPS 上有一个服务器,代码如下:
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(8080);
io.on('connection', function(socket) {
socket.on('hello', function() {
console.log('Hello received');
}
}
还有一个客户端在另一台机器上:
<script>
var socket = io.connect('http://[VPS Public IP]:8080');
io.emit('hello');
</script>
这在使用私有 IP 地址和同一个网络时有效。使用公共 IP 时,这不起作用。知道为什么会这样吗?
谢谢。
【问题讨论】:
-
VPS 上是否有防火墙阻止该端口?节点是否绑定到 0.0.0.0?
-
这是一个运行 Ubuntu 16.04 的 VPS。我试图禁用 ufw(Ubuntu 的默认防火墙),但我的 VPS 没有安装它,所以我想没有防火墙。我对吗?我已经用 server.listen(8080, "0.0.0.0") 替换了 server.listen(8080) 并且没有任何变化。
-
通过命令
telnet VPS_Public_IP 8080验证连通性 -
telnet 连接成功。
标签: javascript node.js socket.io vps