2012-03-13 2 views
22

두 개 이상의 다른 node.js 응용 프로그램 서버간에 소켓 기반 P2P 통신을 사용하고 싶습니다. 주어진 서버와 그것이 제공하는 웹 애플리케이션 간의 모든 통신을 처리하기 위해 socket.io를 사용하고 있습니다. 그러나 내가 찾고있는 것은 서버 간 통신 방법입니다. 이 밝혀 서버 측 socket.io 구현 만에 "연결"방법을 제공하지 않습니다,node.js 서버에서 (서버 측) 실행중인 socket.io 클라이언트를 설정할 수 있습니까?

var io = require("socket.io"); 
var socket = io.connect("my remote endpoint"); 

그러나 :

나는 처음에이 같은만큼 쉬운 것입니다 가정했다 듣는 방법.

왜 이런가요? 왜 노드 응용 프로그램 서버를 다른 곳에서 실행되는 socket.io 서버의 클라이언트로 취급 할 수 없습니까? 이 기능을 구현할 수있는 방법이 있습니까?

+3

당신이 후있어 그냥 뭐 클라이언트 라이브러리를하는 것입니다? https://github.com/LearnBoost/socket.io-client – pimvdb

+0

node.js 앱에 연결할 수 있습니까? 어떻게 요구합니까? 내가 말할 수있는 한 브라우저 기반 사용을 위해 설계되었습니다. – Myk

+0

이 s/o 스레드를 참조하십시오 : http://stackoverflow.com/questions/6785979/socket-io-client-issues-require-socket-io-client-js-not-working – Myk

답변

51

위의 설명에서 @pimvdb 덕분에 실행 가능한 솔루션을 얻었습니다.

기본적으로 npm이 설치하는 socket.io 라이브러리에는 socket.io-client라는 다른 모듈에 대한 종속성이 있습니다. 표준 socket.io 설치에서는 node_modules/socket.io/node_modules/socket.io-client에 설치됩니다.

그러나 "npm install socket.io-client"라고 말하면서 설치할 수도 있습니다. 자신의 일류 시민 도서관.

var client = require("socket.io-client"); 
client.connect("http://myendpoint.com:3000/whatever"); 
client.emit("test", "foo"); 

을 그리고 모든 작동합니다

그런 다음 사용은 다음과 같습니다.

감사합니다.

+7

찾은 해결책을 게시하기위한 +1 – pimvdb

+9

'var client = require ("socket.io-client"); var socket = client.connect ("http : // localhost : 3000"); 소켓.emit ("test", "foo"); ' 이것은 나를 위해 일했다. – nullbuilt

2

서버 간 통신을 위해 socket.io에서 전체 속도를 시작하기 전에 ..... socket.io는 서버 통신 인프라에 대한 브라우저로 설계되었습니다. 나는 그것이 P2P 서버를위한 최상의 솔루션이라고 확신 할 수 없다. 또한 서버 대 서버를 사용하는 경우 웹 소켓 만 사용하는 것이 좋을까요? 노드를위한 다양한 websocket 모듈이 있습니다. 그냥 해명 https://github.com/einaros/ws

+1

그 모든 것을 이해합니다. 상황은 내가 브라우저 <-> 노드 통신이 이미 설정되어 전체 API가 내장 된 socket.io 기반 웹 응용 프로그램이 있다는 것입니다. node.js의 로컬 인스턴스를 회전시키고 Arduino에 연결 한 다음 기존 socket.io 세션에서 하나 이상의 항목으로 연결할 수 있기를 원했습니다. 말이 돼? – Myk

+0

물론 재미있을 것 같습니다. 행운을 빕니다. – Mark

6

,이 청취자와 가능성 예를 들어 이벤트를 방출 (그리고없이 다시 이미 설치 모듈 설치)

var io = require('socket.io/node_modules/socket.io-client'); 

client = io.connect('http://'+CONFIG.host+':'+CONFIG.port); 

client.on('connect',function() { 
    client.emit("test","foo"); 
}); 
+0

클라이언트에 대한 새로운 질문. client.emit ("test", "foo")에서 "foo"가 스트림이고 테스트가 blob 인 경우이 요청을 처리하는 방법은 client.emit ("blobs" 스트림) 좀 더 명확하게 나는 서버 측 스크립트 (server.js)를 찾고 포털을 듣고 도움을 요청하고있다 !!? –

관련 문제