2010-05-18 5 views
5

모든 구독자의 특정 하위 집합에 Node.js 서비스 socket.io (http://socket.io/)를 통해 메시지를 브로드 캐스트하려고합니다. Socket.io의 채널

더 정확히 말하면, 사용자가 구독 할 수있는 채널을 사용하여 동시에 수백 명의 사람들에게 효과적으로 메시지를 전달하고 싶습니다.

addEvent ('channel_name', x)가가는 길인지 확실하지 않습니다.

문서에서 아무 것도 찾지 못했습니다. 어떤 아이디어?

감사 매트

+0

http://stackoverflow.com/questions/4445883/를 그냥 최근에 도입 된 생각하지만, 그것은 언급 할 가치라고 생각 node-websocket-server-possible-to-a-sin/4446178 # 4446178 –

답변

0

당신이 레디 스이/출판이하는 기능을 구독 할 수 있습니다 보인다. this link을 참조하십시오.

0

나는 지금도 같은 문제에 대한 연구를 시작하고 있습니다. Socket.io는 좋아 보이지만 네, 구독자 목록을 직접 관리해야한다고 생각합니다. 밖에있는 대부분의 예제 애플리케이션은 단일 구독자 목록 만 사용합니다.

나는이 건너 않았다 ... http://faye.jcoglan.com/

IT는 pubsub 응용 프로그램에 서버를 켭니다. 구독자 목록을 잘 관리하고 채널에 대한 훌륭한 계층 구조를 제공합니다. 그러나, 나는 그것을 실행하는 동일한 애플 리케이션 내에서 게시 된 이벤트에 응답 예를 찾을 수 없습니다 ?? 나는 그것이 가능하다고 생각하고있다. 나는 근원을 봐야 할 것이다. 클라이언트로 작동하는 서버에 별도의 노드 앱을 실행하는 예를 보여주는 것 같습니다.

다른 기능은 사용 권한입니다. 일부 고객 만 특정 채널에 게시 할 수 있기를 바랍니다.

+0

후속 조치로서, 나는 faye를 http://nodeknockout.com/의 일부로 사용했고, 잘 했어. faye 웹 사이트에는 필요한 경우 필터를 사용하여 인증을 수행하는 방법에 대한 좋은 예가 있습니다. 또한 connect에는 pubsub을 수행하는 미들웨어 플러그인이 있다는 것을 알게되었습니다. faye 구현은 확실히 더 완벽합니다. – bxjx

4

이것은 조금 늦었습니다 (!)하지만 내 추천 로그에서 발견했습니다 (저는 Faye의 저자입니다). Faye와 동일한 서버에 있든 없든 응용 프로그램에서 메시지를 게시하는 것은 쉽습니다. 예를 들어 앱 로직이 동일한 서버 프로세스에있는 경우

var faye = require('faye'), 
    http = require('http'); 

// Set up the server 

var server = http.createServer(function(req, res) { 
    // dispatch to your app logic... 
}); 

var bayeux = new faye.NodeAdapter({mount: '/bayeux'}); 
bayeux.attach(server); 
server.listen(8000); 

당신은이 작업을 수행 할 수 있습니다

:

bayeux.getClient().publish('/channel', {hello: 'world'}); 

그렇지 않으면 당신은 당신의 페이 서버에 연결 노드의 클라이언트를 만들 수 있습니다

var client = new faye.Client('http://0.0.0.0:8000/bayeux'); 
client.publish('/channel', {hello: 'world'}); 

어느 쪽이든, Faye 서버는 서버 또는 클라이언트 쪽이든 구독 한 클라이언트에게 메시지를 릴레이합니다. 희망이 도움이됩니다.