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不工作的主要内容,如果未能解决你的问题,请参考以下文章

websocket-rails,websocket握手错误

Rails 和 Websocket

从 rails runner 内部触发/订阅 websocket-rails 事件

Rails 4 + Websocket-rails + Passenger + Nginx + 负载均衡器

websocket-rails 在生产中没有连接

带有 Rails(Puma)的 Websockets - WebSocket 握手期间出错:意外的响应代码:200