问题标签 [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.

0 投票
1 回答
859 浏览

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-rubywebsocket-client-simple来实现一个普通的 WebSocket 客户端,但是在我的头在键盘上敲了一段时间之后,我发现有某种“握手”过程使用connection_idclient_connected消息中。基本上这个其他问题中提供的解决方案都不适合我。

我需要了解是否MyDaemon可以在我的内部直接订阅一些WebsocketRails回调,甚至在 EventMachine 内部,或者我应该如何在 Ruby 本身中实现 ​​Websocket 客户端。

我最后一次尝试拥有一个 ruby​​ 客户端可以在这个 gist中找到,这是一个示例输出:

虽然日志websocket-rails是:

可能我错过了一些非常愚蠢的东西,所以我在这里寻求您的帮助!

0 投票
0 回答
172 浏览

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)客户端通信?

0 投票
0 回答
152 浏览

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"):

我使用此代码将事件发送到特定客户端:

0 投票
1 回答
5831 浏览

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

我正在尝试在我的 Rails4.1 应用程序中使用 websocket

以下是一些相关的代码片段:

宝石文件:

发展.rb

我在本地启动服务器:

在 chrome 控制台中,我看到一个连接错误:

任何人都可以帮助我在 Rails 中本地使用 Web 套接字需要做些什么吗?


更新1

当我在 Unicorn 服务器上运行时,我尝试根据Websockets 在我的 Rails 应用程序中不工作添加以下内容,但在瘦服务器上工作但没有帮助

初始化程序/eventmachine.rb

0 投票
0 回答
419 浏览

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 上运行
0 投票
1 回答
410 浏览

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 的可扩展性有任何经验吗?

0 投票
1 回答
264 浏览

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 支持付出代价?

0 投票
1 回答
543 浏览

ruby - Rails 中的 WebSockets:在使用 websockets 时,我们是否必须在现有应用程序中创建一个新的 WebSocketController?

我在这里有一个聊天应用程序。我正在浏览 WebSockets 的wiki。ChatController 中的代码描述如下:

我的问题:我应该如何在我的扩展中实现chatcontroller这个ApplicationController?. 我是否应该创建一个新的控制器来使用websockets或修改现有chatcontroller的应该扩展的控制器WebsocketRails?. 我是 WebSockets 的新手,所以任何有关这方面的帮助都会有帮助。

谢谢你 。

0 投票
1 回答
6537 浏览

ruby-on-rails - WebSocket 握手期间出错:意外响应代码:503

我正在尝试将 websocket rails 与 angular 和 heroku 一起使用。它正在开发中,但现在正在生产中。这是发布事件的服务器代码和侦听它的客户端。

我在生产中使用 SSL。我已经尝试过设置

production.rb,但无济于事。

我得到的错误是:

0 投票
2 回答
118 浏览

ruby-on-rails - 在 Rails 中使用 em-websocket 构建对讲系统的策略?

也许这是服务器推送系统的一个很好的例子。系统中有很多用户,用户可以互相交谈。可以这样完成:一个用户(通过 websocket)向服务器发送消息,然后服务器将消息转发给另一个用户。关键是找到ws(websocket object)和用户之间的绑定。示例代码如下:

我想弄清楚以下问题:

  1. 对象可以被序列化,ws以便可以存储到磁盘或数据库中?否则我只能将绑定存储到内存中。

  2. em-websocket 和 websocket-rails 有什么区别?

  3. 你推荐哪个 gem 用于 websocket?