问题标签 [websocket-rails]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 从 rails runner 内部触发/订阅 websocket-rails 事件
我有一个带有websocket-rails gem 的 Rails 应用程序。
在我的应用程序中有一个守护进程,我使用它启动rails runner MyDaemon.start
我正在使用websocket-rails Synchronization,所以我config/initializers/websocket_rails.rb
看起来像这样:
在内部MyDaemon
,使用同步,我可以触发将同时到达我WebsocketRails::BaseController
和我的 javascript的事件WebSocketRails
。
我想做的是找到一种方法来绑定我的事件MyDaemon
。
我尝试使用faye-websocket-ruby和websocket-client-simple来实现一个普通的 WebSocket 客户端,但是在我的头在键盘上敲了一段时间之后,我发现有某种“握手”过程使用connection_id
从client_connected
消息中。基本上这个其他问题中提供的解决方案都不适合我。
我需要了解是否MyDaemon
可以在我的内部直接订阅一些WebsocketRails
回调,甚至在 EventMachine 内部,或者我应该如何在 Ruby 本身中实现 Websocket 客户端。
我最后一次尝试拥有一个 ruby 客户端可以在这个 gist中找到,这是一个示例输出:
虽然日志websocket-rails
是:
可能我错过了一些非常愚蠢的东西,所以我在这里寻求您的帮助!
ruby-on-rails - 从 ruby 客户端调用 websocket-rails
我有一个纯 ruby 客户端,我想通过 websocket 连接发送消息。websocket 在 rails 应用程序中运行,我正在使用 websocket-rails gem ( https://github.com/websocket-rails/websocket-rails )
使用以下代码,我能够成功连接到我的 websocket,但我无法收到任何消息。
这可能是因为我无法像 websocket-rails 通信所期望的那样为消息指定事件名称。有没有办法通过 websocket-rails websocket 与 rails(或 python)客户端通信?
ruby-on-rails - 向特定客户端发送事件时 websocket-rails 上的 Redis 错误
我正在使用'threadsocket-rails'
内存大小为 30MB 的 websocket-rails gem 和 Heroku 的 RedisCloud 服务的分支。(链接: https ://elements.heroku.com/addons/rediscloud )
在我的配置中,我启用了通道同步并将 redis_options 设置为:
当 android 或 ios 设备触发事件时,它们会得到这个空哈希(当我使用 redis 时):
我也收到此错误:
否则他们会得到正确的响应("message":"user join new channel"
):
我使用此代码将事件发送到特定客户端:
ruby-on-rails - 带有 Rails(Puma)的 Websockets - WebSocket 握手期间出错:意外的响应代码:200
我正在尝试在我的 Rails4.1 应用程序中使用 websocket
以下是一些相关的代码片段:
宝石文件:
发展.rb
我在本地启动服务器:
在 chrome 控制台中,我看到一个连接错误:
任何人都可以帮助我在 Rails 中本地使用 Web 套接字需要做些什么吗?
更新1
当我在 Unicorn 服务器上运行时,我尝试根据Websockets 在我的 Rails 应用程序中不工作添加以下内容,但在瘦服务器上工作但没有帮助
初始化程序/eventmachine.rb
ruby-on-rails-4 - Websocket-rails 不触发消息到通道(独立,同步)
我正在尝试将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中建议的事件:
但是,我的 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 上运行
ruby-on-rails - gem“websocket-rails”及其可扩展性
我们目前正在开发一个聊天(如 facebook,带有存储的消息)。目前,至少有500个在线用户(它是一个约会网站),高峰时最多有3000个用户同时在线。
切换到 websockets 对我们来说是“事情”,但是在使用 gem “websocket-rails”时,我们有点担心性能。阅读文章,如https://www.igvita.com/2008/11/13/concurrency-is -a-myth-in-ruby/引起了一些疑问。
所以我们的问题是:
websocket-rails 是否正在杀死我们的应用程序?另一种选择是运行 jsnode 服务器并切换到 faye,这在我们的 scalabitliy 中应该不是问题。有人对 websocket-rails 的可扩展性有任何经验吗?
ruby-on-rails - Rails Heroku Cloudflare SSL 和 websockets
我已经在 Heroku 上设置了我的 Rails 应用程序并使用了帖子中的信息:Heroku + Cloudflare 完全免费的 SSL让 SSL 免费工作,但我的 websockets 连接不起作用。我得到错误WebSocket connection to 'wss://www.myapp.com/websocket' failed: Error during WebSocket handshake: Unexpected response code: 200
。我知道这是因为 Cloudflare 在他们的免费计划中不支持 websocket,他们建议设置一个不通过 Cloudflare 的子域。问题当然是子域不能使用“免费”SSL 设置。
无论如何我可以让它工作,还是我必须为 Heroku 上的 SSL 支持或 Cloudflare 上的 Websocket 支持付出代价?
ruby-on-rails - WebSocket 握手期间出错:意外响应代码:503
我正在尝试将 websocket rails 与 angular 和 heroku 一起使用。它正在开发中,但现在正在生产中。这是发布事件的服务器代码和侦听它的客户端。
我在生产中使用 SSL。我已经尝试过设置
中production.rb
,但无济于事。
我得到的错误是:
ruby-on-rails - 在 Rails 中使用 em-websocket 构建对讲系统的策略?
也许这是服务器推送系统的一个很好的例子。系统中有很多用户,用户可以互相交谈。可以这样完成:一个用户(通过 websocket)向服务器发送消息,然后服务器将消息转发给另一个用户。关键是找到ws(websocket object)和用户之间的绑定。示例代码如下:
我想弄清楚以下问题:
对象可以被序列化,
ws
以便可以存储到磁盘或数据库中?否则我只能将绑定存储到内存中。em-websocket 和 websocket-rails 有什么区别?
你推荐哪个 gem 用于 websocket?