2014-12-31 4 views
2

Я использую канал рельсов websocket и запускаю его из рабочего пользователя sidekiq. триггер получить вход в WebSocket рельсах лог правильно, как это, с удаленной < перед тем StationSongs:websocket rails javascript not working

I [2014-12-31 16: 19: 28,788] [Канал] [station10938] #StationSongs _id : 54a41400446562680e17c102, имя: «Fedde & Di-Rect Le Grand», название: «Dream Dance Vol.73 - 14 - Where We Belong», информация: ноль, неделя: 1, год: 2014, дата: 2014-12-31 15:19:28 UTC, station_id: 10938>

это получить срабатывает так:

channel = "station" + station_id.to_s 
WebsocketRails[:"#{channel}"].trigger(:new, stationsong) 

Затем я подписаться на канал station10938, код javascritp выглядит следующим образом:

var dispatcher = new WebSocketRails('localhost/websocket'); 
var stationid = $('#songhistorylist').data("id"); // is 10938 
var stationname = 'station' + String(stationid); 
var channel = dispatcher.subscribe(stationname); 
console.log(channel); 
channel.bind('new', function (song) { 
     console.log(song); 
     console.log('a new song about ' + song.name + " - " + song.title + ' arrived!'); 
}); 

Это будет только распечатать канал, а не что-либо еще, даже если канал приходит в лог все время.

Что я сделал не так?

+0

ли вы найти решение? У меня такая же проблема. – PSR

ответ

0

На линии: WebsocketRails[:"#{channel}"].trigger(:new, stationsong), удалите ":".

Оно должно быть: WebsocketRails["station#{station_id}"].trigger(:new, stationsong) В ваших JS, диспетчер должен выглядеть следующим образом: var dispatcher = new WebSocketRails(window.location.host + '/websocket') потому, что ваш порт сервера может измениться.

Ваш сервер должен иметь (при условии, stationsong установлен правильно):

channel = "station" + station_id.to_s 
WebsocketRails["#{channel}"].trigger(:new, stationsong) 

Ваш клиент должен иметь JS:

var dispatcher = new WebSocketRails(window.location.host + '/websocket') 
var stationid = $('#songhistorylist').data("id"); // is 10938 
var stationname = 'station' + String(stationid); 
var channel = dispatcher.subscribe(stationname); 
console.log(channel); 
channel.bind('new', function (song) { 
     console.log(song); 
     console.log('a new song about ' + song.name + " - " + song.title + ' arrived!'); 
});