node.js + socket.io + redis + szyny - aplikacja RealTime

Muszę dodać do mojej aplikacji w czasie rzeczywistym (Ruby On Rails), więc myślę, że lepszym sposobem jest użycie node.js + socket.io + redis.

Mam ten plik application.js w backend (node.js)

var app = require('http').createServer();
var io = require('socket.io');
var redis = require('redis').createClient();
var _ = require('underscore')._;

io = io.listen(app);
io.configure(function() {
    io.set("transports", ["xhr-polling"]);
    io.set("polling duration", 10);
    io.set("close timeout", 10);
    io.set("log level", 1);
})

redis.subscribe('rt-change');

io.on('connection', function(socket) {
    redis.on('message', function(channel, message) {
        socket.emit('rt-change', message)
    });
});

var port = process.env.PORT || 5001;
app.listen(port);

I messages.js w interfejsie

 var socket = io.connect('http://localhost:5001/socket.io');
socket.on('rt-change', function (data) {
    console.log(data);
});

Uruchomię application.js za pomocąwęzeł application.js polecenie i to działa!

MacBook-Pro-Zhirayr: rt zhirayr $ node application.js info - socket.io start

Ale gdy próbuję wysłać wiadomość za pomocą redis ($ redis.publish 'rt-change', {hello: 'world'}) z aplikacji Rails, moja przeglądarka nie rejestruje niczego w konsoli. Jestem pewien, że połączenie z przeglądarki zostało ustanowione, ponieważ po zatrzymaniu węzła zgłasza błąd odrzucenia połączenia. I jestem pewien, że połączenie między redis a węzłem zostało ustanowione, ponieważ plik console.log (komunikat) w application.js rejestruje go. Ale console.log w przeglądarce nie rejestruje niczego.

Jakieś pomysły dlaczego?

Dzięki.

UPD dla #Antoine

Dodano console.log w application.js io.on ('connection', function (socket) {redis.on ('message', function (channel, message) {console.log ('nowa wiadomość od redis'); gniazdo. emit ('rt-change', message);});});

Gdy r.publish 'rt-change', {: hello => 'world'} zostanie wykonane, węzeł rejestruje to:

new message from redis
new message from redis
new message from redis
new message from redis
new message from redis
new message from redis
new message from redis
new message from redis
new message from redis
new message from redis
new message from redis

To dziwne, węzeł loguje się 11 razy za 1 wiadomość.

questionAnswers(2)

yourAnswerToTheQuestion