【问题标题】:Running /socket.io/socket.io.js using a public IP使用公共 IP 运行 /socket.io/socket.io.js
【发布时间】:2015-09-30 23:30:09
【问题描述】:

所以,我正在尝试在我的私人服务器上运行我的 Node.js。现在的问题是,我创建了一个聊天程序,当我在本地网络上运行它时效果很好。

现在,当我将 IP 更改为我的公共 IP 时,它不会加载 /socket.io/socket.io.js 文件。它说net::ERR_CONNECTION_TIMED_OUT

我要连接的代码部分是:

Server.js:

var mongo = require('mongodb').MongoClient,
    client = require('socket.io').listen(8080).sockets;
    console.log('info - socket.io started');

mongo.connect('mongodb://127.0.0.1/chat', function(err, db) {
    if(err) throw err;

索引.html:

<script src="http://94.211.125.196:8080/socket.io/socket.io.js"></script>

<script>
// Try connection
try {
    var socket = io.connect('http://94.211.125.196:8080');
} catch(e) {
    // Set status to warn user
}
</script>

我确实将所需的端口端口转发到我的服务器 (8080 & 27017)

【问题讨论】:

  • 数据库连接是否有效? Mongo 默认会阻止除 localhost (AFAIK) 之外的所有内容。
  • 不,我已将其更改回 localhost,因为无论如何它只会在服务器上运行。 @Dodekeract

标签: javascript html node.js


【解决方案1】:

您没有托管 socket.io.js 文件。您需要从其他地方包含 js 文件,或者通过在节点脚本中启动 httpServer 来托管它。尝试使用 socket.io cdn:

<script src="https://cdn.socket.io/socket.io-1.3.5.js"></script>

【讨论】:

  • 谢谢!您是否也知道如何修复var socket = io.connect('http://10.0.0.199:8080');
  • 这有什么问题?如果有一个套接字服务器在该地址运行,它应该连接。你有错误信息吗?
  • 我也希望它公开,但是当我将私人地址更改为我的公共地址时它无法连接。
  • 根据您提供的信息不确定。如果您无法公开访问它,这听起来像是路由或防火墙问题。你的代码是正确的。
  • 我 100% 确定该端口在防火墙上已打开,并且端口已转发到服务器。所以我不认为路由/防火墙是问题。我应该就此提出一个单独的问题吗?
猜你喜欢
  • 2019-02-02
  • 1970-01-01
  • 2021-02-27
  • 2017-06-30
  • 2017-02-02
  • 2017-07-23
  • 2012-12-24
  • 2019-01-26
  • 2022-11-10
相关资源
最近更新 更多