0

我设法设置了一个 node.js 服务器,并在我的本地计算机上访问它(通过 localhost)。但是,我无法从 LAN 上的任何其他计算机访问它。

服务器是192.168.1.103,客户端是192.168.105

我将 Apache 用于 Web 服务器,将 node.js 用于端口 8080 上的聊天服务器。

似乎每次我重新启动服务器时,都会收到不同的错误。有时我可以从远程计算机访问 192.168.1.103:8080/socket.ion/socket.io.js ,有时它会因错误而导致服务器崩溃,或者:

/home/tnewhook/node_modules/socket.io/lib/manager.js:0
(function (exports, require, module, __filename, __dirname) { /*!
^
RangeError: Maximum call stack size exceeded

或者

/home/tnewhook/node_modules/socket.io/lib/manager.js:916
match = req.url.substr(0, resource.length);

到目前为止我见过的最奇怪的错误是

missing resource (GET http://192.168.1.105:8080/socket.io.  error in socket.io.js:1632 

为什么 socket.io 会尝试调用自己?

4

1 回答 1

0

如果我在客户端套接字 io js 中没有记错的话,有一个硬编码的 ip,这解释了为什么这在两台计算机之间不起作用。

要解决此问题,请将您的应用程序上传到像dotcloud.com这样的服务提供商,或者 nodejitsu(仅限有限的 beta 访问)唯一支持 websockets 的服务提供商。

或者您可以例如在机器 edic/etc/hosts 和服务器上添加

myApp.local 127.0.0.1

并在客户端

myApp.local 192.168.1.103

例如,对于一个 procedent 项目,我使用本地 DNS 或 dotcloud 与世界共享。

var url = 'http://myapp:8080';
url = 'http://myapp-me.dotcloud.com';
var socket = io.connect(url);
于 2012-08-03T04:56:22.117 回答