2012-08-03 8 views
0

node.js 서버를 설정하고 로컬 컴퓨터 (localhost를 통해)에 액세스했습니다. 그러나 LAN상의 다른 컴퓨터에서는 액세스 할 수 없습니다.node.js 서버 설정

서버가 192.168.1.103이고, 클라이언트는 것 같다 8080

포트에서 채팅 서버 나 웹 서버에 아파치를 사용하고 192.168.105

이며, Node.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); 

: 가끔, 중 때때로이 eror와 서버 충돌, 원격 컴퓨터에서 192.168.1.103:8080/socket.ion/socket.io.js에 액세스 할 수 있습니다 지금까지 본 것 중 가장 이상한 오류는 다음과 같습니다.

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

왜 socket.io가 스스로를 호출하려고합니까?

+0

클라이언트가 192.168.105'라는 의미는 무엇입니까? 이 [link] (http://en.wikipedia.org/wiki/IPv4)를 확인하십시오 –

답변

0

클라이언트 측 소켓 io js에서 실수가 아닌 경우 하드 코드 된 IP가 있는데, 이는 두 컴퓨터간에 작동하지 않는 이유를 설명합니다.

이 문제를 해결하려면 예를 들어 dotcloud.com과 같은 서비스 제공 업체에 업로드하거나 nodejitsu (제한된 베타 액세스 만) 웹 소켓을 지원하는 하나만 업로드하십시오.

또는 두 machin의 EDIC /etc/hosts 과에 예를 들어 나도 현지를 사용하여 한 procedent 프로젝트에 대한 예를 들어 serveur

myApp.local 127.0.0.1 

에 클라이언트

myApp.local 192.168.1.103 

에 추가 할 수 있습니다 DNS 또는 dotcloud가 세계와 공유합니다.

var url = 'http://myapp:8080'; 
url = 'http://myapp-me.dotcloud.com'; 
var socket = io.connect(url); 
+0

내 서버와 그 서버의 차이점은 무엇입니까? 잘못된 IP가 여전히 클라이언트에 하드 코딩되지 않습니까? –

+0

모든 클라이언트를 가리 키도록 고유 한 DNS가 있어야합니다. 그렇게하려면 서버를 웹에 올려 놓고 공용 DNS를 클라이언트 연결 문자열에 넣거나/etc/host를 사용하여 모든 클라이언트에서 DNS를 가짜로 만들면됩니다. – 3on

+0

클라이언트 측 js를 편집해야합니다. – 3on