我正在尝试将websocket-rails(独立,在 local.host:3245 上与 redis 同步)与我的 Rails Grape API(在 local.host:3001 上运行)一起使用
现在我尝试从我的 Grape API 端点之一向通道 A 发送消息,例如:
WebsocketRails[:a_channel].trigger('welcome_message', 'Hello world!')
然后在我的 Rails 客户端(在 local.host:3005 上运行)我尝试获取消息并在浏览器中显示它。使用 WebsocketRails js 客户端,我可以连接到服务器。订阅频道并绑定到wiki中建议的事件:
var dispatcher = new WebSocketRails('local.host:3245/websocket');
var channel = dispatcher.subscribe('a_channel');
channel.bind('welcome_message', function(data) {
console.log('channel event received: ' + data);
});
但是,我的 console.log 中没有显示任何内容,但是当我查看 websocket_rails.log 时,我看到:
[2015-08-18 10:03:23.184] [[32mChannel[0m] [a_channel] {"welcome_message"=>"Hello world!"}
当我使用 redis 查看时,redis-cli monitor
我没有看到 websocket_rails 键(至少我认为它们应该在那里......)而且在我的
chrome developer environment --> websockets --> headers
我看到客户端和服务器之间的 ping / pong,但所有变量都是空的。
我不使用 WebsocketControllers 或 events.rb 路由,应该吗?基于这个 wiki 页面,我认为我不必这样做。另外,由于 API 版本控制,我宁愿不使用控制器,而是将所有内容保存在我的 Grape 文件中。
有没有人有建议/想法如何解决这个问题?
提前致谢!
笔记:
- 导轨 4.2.3
- 红宝石 2.1.0
- API 服务器在 Unicorn 上运行
- rails 客户端在 Thin 上运行