Я только что кратко просмотрел Джаггернаут, так что ответь мне немного соли ...
- Возможно, вас заинтересует объект Channel (https://github.com/maccman/juggernaut/blob/master/lib/juggernaut/channel.js). Вы заметите, что Channel.channel является объектом (например, хэшем ruby) всех существующих каналов. Вы можете установить 30-секундный повторяющийся таймер (setInterval - http://nodejs.org/docs/v0.4.2/api/timers.html#setInterval) чтобы что-то сделать со всеми вашими каналами.
Что делать в каждой итерации цикла? Ну, ссылка на вышеупомянутый код канала имеет метод публикации:
publish: function(message){
var channels = message.getChannels();
delete message.channels;
for(var i=0, len = channels.length; i < len; i++) {
message.channel = channels[i];
var clients = this.find(channels[i]).clients;
for(var x=0, len2 = clients.length; x < len2; x++) {
clients[x].write(message);
}
}
}
Таким образом, вам необходимо создать объект Message с message.channels, установленным в Channel.channels, и если вы передадите это сообщение методу публикации, оно будет отправлено всем вашим клиентам.
Что касается содержания вашего сообщения, я не знаю, что вы используете на стороне клиента (socket.io? Клиент чата, который кто-то уже создал для вас из Juggernaut и socket.io?), Так что это зависит от вас.
Что касается места размещения кода, создающего интервал и запускающего обратный вызов для публикации вашего сообщения на всех каналах, вы можете проверить здесь код, который создает реальный сервер, прослушивающий данный порт: (https://github.com/maccman/juggernaut/blob/master/lib/juggernaut/server.js) Если вы добавите интервал в init (), то, как только вы запустите сервер, он будет проверять каждые 30 секунд, чтобы опубликовать данное сообщение на каждом канале