【发布时间】:2017-06-23 00:10:33
【问题描述】:
我想在我的公共 IP 上加载我的套接字服务器,因为现在我只能在 LAN localhost:8080 或 127.0.0.1:8080 上加载它。我想连接我自己的IP77.90.100.55:8080。
我不知道为什么但我不能使用
io.connect('http://77.90.100.55:8888');
要连接,只有这个有效:
io.connect('http://localhost:8888');
当我尝试与 77.90.100.55 连接时,我在客户端收到此错误:
polling-xhr.js:264 GET http://77.90.100.55:3000/socket.io/?EIO=3&transport=polling&t=LpBv_sK net::ERR_CONNECTION_TIMED_OUT
服务器
var http = require("http").createServer(), io = require("socket.io").listen(http);
var port = process.env.PORT || 3000;
http.listen(port);
//================================ Connection stuff ================================//
io.sockets.on("connection", function(socket)
{
socket.on('player connected', function(data)
{
});
});
console.log('Server listening on port %s', http.address().port);
更新
我可以使用所有端口和公共 IP,并且可以通过命令行访问我的 IP:
Pinging 77.90.100.55 with 32 bytes of data:
Reply from 77.90.100.55: bytes=32 time<1ms TTL=64
Reply from 77.90.100.55: bytes=32 time<1ms TTL=64
Reply from 77.90.100.55: bytes=32 time<1ms TTL=64
Reply from 77.90.100.55: bytes=32 time<1ms TTL=64
Ping statistics for 77.90.100.55:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
我用start.bat运行节点服务器:
node C:\xamppp\htdocs\pure2d\server\server.js 2>error_log.log
【问题讨论】:
-
这与node.js无关。确保您的网络配置为将 8888 从您机器的本地地址移植到公共地址。默认情况下,消费者路由器会阻止所有传入流量。
-
我没有路由器,我的互联网提供商让我使用所有端口和公共 ip,我可以托管任何游戏,其他人可以连接,所有来自客户端的连接都很好,因为当我使用 localhost 时一切正常很好
-
好的,尝试将
io = require('socket.io').listen(http)更改为io = require('socket.io')(http)。还要确保您的http服务器有一个处理程序。参考this documentation。 -
将代码更改为
io = require('socket.io')(http)无效 -
哦,它正确读取
process.env.port吗?通常,该端口通过process.env.PORT传递,因此请确保它没有在端口 3000 上运行。