In your case if you are just publishing strings/numbers, creating some network of channels by name could be useful. If you are publishing a stringified json object, its probably not necessary to also use different subscription channels because that data can be part of what you send but you could still make use of them.
Thomas Blobaum https://github.com/tblobaum On Fri, Jul 13, 2012 at 12:29 AM, hd nguyen <[email protected]> wrote: > Thanks Tim for your suggestion about subscriber part. > > Any suggestions for publisher part(one publisher for each ACTION or one > publisher for ALL ACTION)? I want to hear about it. > > Thanks. > > > On Fri, Jul 13, 2012 at 12:07 PM, Tim Smart <[email protected]> wrote: >> >> Hello, >> >> I would definitely recommend just adding one listener and doing all your >> routing >> from there. Something like: >> >> redis.subscribe('channel1') >> redis.subscribe('channel2') >> >> redis.on('message', function (channel, message) { >> // emitter.emit(channel, message) >> // >> // -or >> // >> // if (methods[channel]) methods[channel](message) >> // >> // -or >> // >> // switch (channel) { >> // case 'channel1': >> // break >> // case 'channel2': >> // break >> // } >> }) >> >> The main reason being no matter how many clients you have, they will all >> receive the same messages as each other; which means your clients will be >> doubling up on emit operations. >> >> Tim >> >> On Fri, Jul 13, 2012 at 11:43:25AM +0700, hd nguyen wrote: >> > Hi all, >> > >> > I have a concern when using pubsub mechanism of redis in my real >> > application. >> > >> > I built a MMO game with 5 servers (NodeJs) and use pubsub of Redis to >> > broadcast game state between servers. >> > >> > But I concern which is the best practice to utilize this mechanism >> > efficiently with a lot of users connect and interact simultaneously? >> > >> > I would love to hear your ideas about following problems: >> > >> > 1/ Should I create NEW channel for each action or just ONE channel for >> > ALL >> > actions? >> > Ex: user1 connect to server1, user2-server2,...userN-serverN >> > When user1 move/fight and lost his health, those action should be >> > broadcast >> > to other servers, so each time want to broadcast I should use: >> > pub1.publish("pub1", "action data sent from pub1"); //just one channel >> > for >> > ALL actions >> > OR >> > pub1.publish("pub1_actionID", "action data sent from pub1"); // each >> > channel for EACH action >> > >> > 2/ And in each servers we create a client to listen: >> > //subscribe ALL channels from ALL OTHER servers >> > client = redis.createClient(port, host); >> > client.subscribe("pub1"); >> > client.subscribe("pub2"); >> > .... >> > client.subscribe("pubN"); >> > >> > client.on("message", function(channel, message){ >> > console.log(host + ":" + channel + ": " + message); >> > }); >> > >> > As above snippet code, each server should be a client to listen ALL >> > CHANNELS published by ALL other servers. >> > >> > But I concern whether I should use just ONE client to listen ALL >> > channels >> > or ONE client for EACH channel? >> > //each subscribe for each channel >> > client1 = redis.createClient(port, host); >> > client2 = redis.createClient(port, host); >> > client1.subscribe("pub1"); >> > client2.subscribe("pub2"); >> > .... >> > client1.on("message", function(channel, message){ >> > console.log(host + ":" + channel + ": " + message); >> > }); >> > client2.on("message", function(channel, message){ >> > console.log(host + ":" + channel + ": " + message); >> > }); >> > ... >> > 3/ Could you tell me how many connections redis can handle maximum in a >> > second? (each time we createClient() we should create a connection to >> > Redis >> > server, right? Does it take a lot of time and overhead?) >> > >> > 4/ Any tool to evaluate performance of pubsub mechanism for a MMO game >> > with >> > multiple requests at the same time? >> > >> > Thanks for your time. >> > >> > -- >> > Nguyen Hai Duy >> > Mobile : 0914 72 1900 >> > Yahoo: nguyenhd_lucky >> > >> > -- >> > Job Board: http://jobs.nodejs.org/ >> > Posting guidelines: >> > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> > You received this message because you are subscribed to the Google >> > Groups "nodejs" group. >> > To post to this group, send email to [email protected] >> > To unsubscribe from this group, send email to >> > [email protected] >> > For more options, visit this group at >> > http://groups.google.com/group/nodejs?hl=en?hl=en >> >> -- >> Job Board: http://jobs.nodejs.org/ >> Posting guidelines: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> You received this message because you are subscribed to the Google >> Groups "nodejs" group. >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> For more options, visit this group at >> http://groups.google.com/group/nodejs?hl=en?hl=en > > > > > -- > Nguyen Hai Duy > Mobile : 0914 72 1900 > Yahoo: nguyenhd_lucky > > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > You received this message because you are subscribed to the Google > Groups "nodejs" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/nodejs?hl=en?hl=en -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en
