|
|
|
| Имеется один канал под именем "public", в него публикуется вся публичная инфа в формате JSON. Считывается это все так:
redisClient.on('pmessage', function(pattern, channel, dataJson) {
dataJson = JSON.parse(dataJson);
// Send to Socket.io
});
|
Сначала, канал пустой (без данных). Как только в нем появляются данные - они рассылаются всем подписчикам. Когда в канале публикуется запись следующая - она рассылается всем подписчикам вместе с предыдущей. И так до бесконечности, отправляя уже ранее отправленные. Как с этим быть? Как правильно работать с каналом? | |
|
|
|
|
|
|
|
для: Oli
(10.03.2014 в 02:52)
| | А нужно как? Чтобы отправленные данные больше не отправлялись? Или спустя какое-то время не отправлялись старые данные? | |
|
|
|
|
|
|
|
для: cheops
(10.03.2014 в 09:26)
| | Нужно так, чтобы, если сообщение было отослано всем и все его гарантированно получили - удалять эту запись с канала. Грубо говоря - очередь: первый пришел - первый ушел.
Хотя, нет, тогда будут задержки в рассылке сообщений | |
|
|
|
|
|
|
|
для: OLi
(10.03.2014 в 23:57)
| | А как сеть устроена, у вас получатели сообщения что из себя представляют? Они напрямую обращаются к redis-серверу? Просто не очень понятная проблема. redis "держит" бешенное количество обращений и вообще крайне надежная штука, на него запросто можно повесить десяток веб-серверов и он спокойно от них отобъется... Создайте ключ и пусть другие регулярно читают этот ключ, например, по крону. | |
|
|
|