2012-08-03 158 views
0

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

服务器是192.168.1.103,客户端是192.168.105

我使用Apache Web服务器,和node.js中为8080

似乎在端口聊天服务器就像每次我重新启动服务器时,我都会得到一个不同的错误。有时候,我可以从远程计算机访问192.168.1.103:8080/socket.ion/socket.io.js,有时它崩溃的服务器与eror,或者:

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

OR

/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会试图自我调用?

+0

'客户端是192.168.105'这是什么意思?检查这[链接](http://en.wikipedia.org/wiki/IPv4) – 2013-03-19 07:02:28

回答

0

如果我没有错误地在客户端socket io js中有一个硬编码的ip,这就解释了为什么这不能在两台计算机之间工作。

要解决此问题,请在服务提供商上载您的应用,例如dotcloud.com或nodejitsu(仅限有限的beta版本),这是唯一支持websocket的应用。

或者你也可以例如在两个MACHIN EDIC /etc/hosts 并在serveur

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); 
+0

我的服务器和他们的有什么区别。客户端上的错误IP是不是仍然会被硬编码? – 2012-08-03 05:01:46

+0

您需要有一个唯一的DNS来指向您的所有客户。要做到这一点,你可以将服务器放在网络上,并将公共DNS放在客户端连接字符串上,或者使用/ etc/host伪造所有客户端上的DNS。 – 3on 2012-08-03 05:08:05

+0

您确实需要编辑客户端js。 – 3on 2012-08-03 05:13:01