2014-09-12 4 views
1

나는 socket.io 구현을 가지고 있으며 도메인간에 작동되도록하려고 노력하고 있지만 실제로는 불가능한 것처럼 보입니다. 내 정확한 사용 사례는 다음과 같습니다.socket.io는 여러 도메인에서 작동합니까?

  • socket.io를 실행하는 node.js 서버가 있습니다.
  • 난 어디서나 호스트 할 수있는 JS/HTML5 게임을 가지고 있는데, 클라이언트 socket.io 코드가 있고 서버에 연결을 시도한다.
  • SpiderMonkey를 통해 모바일 장치에서 실행되는 동일한 JS 코드가 있습니다 (이것이 어떤 도메인에서라도 실행해야하는 주된 이유 중 하나입니다).

내 node.js 서버의 JS 코드를 브라우저에 제공하지 않으면 소켓에 연결할 수 없다는 것을 알게되었습니다. 브라우저에서 내 디스크의 HTML 파일을 열면 예를 들어 작동하지 않습니다.

서버 코드 :

io.on("connection", function(socket) 
    { 
     this.socket = socket; 
     this.socket.on("echo", function(str){ this.socket.emit("message", str); }.bind(this)); 
    }.bind(this)); 

클라이언트 코드 :

this.socket = io.connect(ip); 
this.socket.on("message", function(str) { console.log(str); }); 

그리고 심지어 연결할 수 없습니다, 나는 그것을 연결하려고 나의 인쇄를 얻을 수 있지만, 성공하지 다음 시작 핑 오류가 발생했습니다. 그래서, 이것도 가능합니까? 아니면 긴 여론 조사를해야합니까?

오류 :

[Error] Failed to load resource: A server with the specified hostname could not be found. (socket.io, line 0) 

EXTRA 정보 : 내가 HTML 파일이 파일을 사용하여 디스크에서 오픈에서 연결을 시도하고 경우에 특별히 작동하지 않습니다 : ///. 같은 네트워크에있는 여러 컴퓨터에서 시도해 보겠습니다 ...

+0

'ip'가 유효하지 않은 것 같습니다. 그것이 무엇으로 설정되어 있습니까? 그리고 dev 도구 네트워크 탭에서 요청에 무슨 일이 일어나고 있다고 말합니까? –

+0

URL에 직접 접속하여 '브라우저'에 직접 접속하여 연결되는지 확인하십시오. 그리고 만약 그렇다면 이것은 핸드 쉐이크 문제 일 수 있습니다 ... – Ravi

+0

ip는 localhost : 13375입니다. index.html을 만들면 브라우저에서 아무 문제없이 연결할 수 있습니다. – Eli

답변

2

예, Socket.IO는 도메인 간 상호 운용성이 뛰어납니다. 실제 Socket.IO 라이브러리는 호스팅하는 서버에서로드 될 수 있거나로드되어야합니다.

EXTRA INFO: This specifically will not work if I am trying to connect from an HTML file opened from disk using file:///.

하지 마십시오. 디스크에서 파일을로드 할 때와 HTTP를 통해 파일을로드 할 때 모든 종류의 이상한 문제가 발생합니다.

Failed to load resource: A server with the specified hostname could not be found.

이것은 보통 당신이에 연결하려는 어떤 호스트 것은 DNS 문제를 나타내는 확인할 수없는 것을 의미한다 또는 당신은 당신의 호스트 이름을 typoed있다. 어쨌든 코드 예제에는 문제가있는 부분이 표시되지 않습니다. 브라우저의 개발자 도구를 사용하여 모든 것이 올바르게로드되고 있는지 먼저 확인하십시오. 그런 다음 연결하려는 주소를 확인하십시오.

+0

네, 호스팅 된 웹 서버 (file : /// 대신)에서 socket.io를 실행 한 테스트를했는데 정상적으로 작동했습니다. 이제 이것이 Spidermonkey와 함께 작동하는지 확인해야합니다 ... – Eli

관련 문제