2010-05-18 21 views
5

Node.js service socket.io (http://socket.io/) aracılığıyla tüm abonelerin belirli alt kümelerine bir ileti yayınlamaya çalışıyorum. Socket.io'daki Kanallar

Daha net olmak gerekirse, mesajları aynı anda birkaç yüz kişiye iletmek için kullanıcıların abone olabileceği kanalları kullanmak istiyorum.

Gerçekten addEvent ('channel_name', x) yolunun olup olmadığından emin değilim.

Dokümanlarda hiçbir şey bulamadım. Herhangi bir fikir?

Teşekkür Mat

+0

http://stackoverflow.com/questions/4445883/ sadece son zamanlarda tanıtıldı düşünüyorum ama kayda değer olduğunu düşündüm node-websocket-server-mümkün-için-çok-ayrı-yayınlar-için-günah/4446178 # 4446178 –

cevap

0

Size Redis/yayımlamak bunun için işlevsellik abone kullanabilirsiniz görünüyor. Bakınız this link.

0

Araştırmamı şu anda aynı problemle başlatıyorum. Socket.io harika görünüyor, ama evet, abone listesini kendiniz yönetmek zorunda olduğunu düşünüyorum. Çoğu örnek uygulama, yalnızca tek bir abone listesi kullanmaktadır.

bu rastlamak yoktu ... http://faye.jcoglan.com/

Bir PubSub app içine sunucu döner. Abone listelerini oldukça iyi yönetiyor gibi görünüyor ve kanallar için güzel bir hiyerarşi sağlıyor. Ancak, faye çalıştıran aynı uygulama içinde yayınlanan etkinliklere yanıt veren bir örnek bulamıyorum ?? Sanırım mümkün. Kaynağa bir göz atmam gerekecek. İstemci olarak işlev gören sunucuda ayrı bir düğüm uygulaması çalıştırmanın bir örneği gibi görünüyor.

Aradığım diğer özellik izinler. Sadece belirli müşterilerin belirli kanallara yayınlayabilmesini isterim.

+0

Bir takip olarak, ben http://nodeknockout.com/ ve bir parçası olarak faye kullanılır harika çalıştı. Faye web sitesinde, gerekirse filtrenin nasıl kimlik doğrulaması yapılacağına dair güzel bir örnek var. Ayrıca, connect'in pubsub yapmak için bir middleware eklentisi olduğunu fark ettim. Faye uygulaması kesinlikle daha eksiksiz. – bxjx

4

Bu biraz geç (!) Ama onu yönlendirme günlüklerimde gördüm (Faye'nin yazarıyım). Uygulamanızdan, Faye ile aynı sunucuda olsun ya da olmasın mesajları yayınlamak kolaydır. Örneğin: uygulama mantığı aynı sunucu işleminde ise

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

bunu yapabilirsiniz:

:

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

Aksi takdirde Faye sunucusuna bağlanır Düğüm bir istemci yapabilirsiniz

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

Her iki durumda da, Faye sunucusu, iletiyi sunucu veya istemci tarafı olsun, abone olan istemcilere iletir. Umarım yardımcı olur.

İlgili konular