websocket rails javascript不工作
Posted
技术标签:
【中文标题】websocket rails javascript不工作【英文标题】:websocket rails javascript not working 【发布时间】:2014-12-31 15:34:34 【问题描述】:我使用 websocket rails 通道并从 sidekiq 工作人员触发它。触发器正确地记录在 websocket-rails 日志中,就像这样,在 StationSongs:
之前删除了我 [2014-12-31 16:19:28.788] [频道] [station10938] #StationSongs _id: 54a41400446562680e17c102,名称:“Fedde & Di-Rect Le Grand”,标题:“梦之舞 Vol.73 - 14 - 我们属于哪里”,信息:无,周: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!');
);
这只会打印出频道,而不是其他任何东西,即使频道一直出现在日志中。
我做错了什么?
【问题讨论】:
您找到解决方案了吗?我也有同样的问题。。 【参考方案1】:就行: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!');
);
【讨论】:
以上是关于websocket rails javascript不工作的主要内容,如果未能解决你的问题,请参考以下文章
从 rails runner 内部触发/订阅 websocket-rails 事件