问题标签 [em-websocket]

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 回答
932 浏览

ruby - is Ruby em-websocket blocking?

I'm writing a ruby program that has 2 threads. One that listens on an incoming UDP connection and another that broadcasts on a websocket from which browsers on the client side read.I'm using the em-websocket gem. However, My UDP listener thread never gets called and it looks like the code stays within the websocket initialization code. I'm guessing because em-websocket is blocking, but I haven't been able to find any info online that suggests that. Is it an error on my side? I'm kinda new to ruby so I'm not able to figure out what I'm doing wrong.

0 投票
1 回答
660 浏览

ruby - Multiple subscribers with EM-WebSocket or Goliath

So I'm attempting to setup em-websocket (or potentially Goliath), so that users can come to a different route and thusly be subscribed to only that channel, so for example:

Browsers open there will only receive messages published to channel_1, actually to that point it doesn't have to be a route like this I'd settle for using params. So I'm using AMQP and it has the notion of a direct exchange, and routing keys. Is there something analogous to that with websockets?

I've got a Goliath server working but the issue is, that because it uses shared endpoints, I think that all the browsers open with a websocket connection are getting the same messages, here's what I'm doing:

So this example uses AMQP, which I'd still like to use, but the issue I think lies in that each client is reinstantiating EM::Channel.new, and then the messages are pushed to that channel, I just don't understand how I would have multiple clients subscribed to different channels.

Any help understanding this or guiding me to a more appropriate design pattern.

0 投票
1 回答
1523 浏览

ruby - em-websocket - *** 检测到缓冲区溢出 ***: ruby​​ 终止

我尝试使用 eventmachine + em-websocket + redis 来构建通知服务器。完成几乎所有代码后,它看起来不错。但是,当我开始测试连接时,发生了一些事情。连接不能超过 1015(我不知道为什么是 1015)。

我尝试简化代码并找到问题,但我不知道我能做什么。

环境

  • RVM Ruby ruby​​-1.9.3-p194(也试过 ree)
  • 服务器:Ubuntu 12.04(也试过 Mountain Lion)
  • 客户:山狮

宝石

  • em-websocket 0.3.8
  • eventmachine 0.12.10(也试过 1.0.0.beta.4)
  • em-websocket-client 0.1.1

客户

服务器

错误信息

我认为有一些可能性:

  1. 操作系统内核问题。我可以更改一些设置来修复它。
  2. 红宝石问题
  3. 事件机问题
  4. em-websocket 问题

谁能给我一些建议,谢谢:)

0 投票
2 回答
357 浏览

ruby - 是否有用于 websockets 的 ruby​​ 的稳定、生产就绪库?

我已经将 Socket.io 与 node.js 一起使用了一段时间,但我真的很想在 Ruby 中做到这一点。似乎有一些项目可用,但大多数都已经死了,即:

我能找到的唯一项目是em-websocket,但是它非常低级并且没有任何客户端库。

我是否错过了一些项目或图书馆,或者真的没有办法用 Ruby 做 WebSockets?

0 投票
1 回答
762 浏览

ruby - EventMachine 和 em-websocket - 从队列中读取并推送到通道

我正在使用 eventmachine 从 HornetQ 主题中读取,推送到由 EM websocket 连接订阅的频道。我需要防止 @topic.receive 循环阻塞,因此创建了一个 proc 并在没有回调的情况下调用 EventMachine.defer。这将无限期地运行。这工作正常。我也可以只使用 Thread.new。

我的问题是,这是从流/队列中读取数据并将数据传递到通道的正确方法吗?还有更好的/其他方法吗?

0 投票
1 回答
719 浏览

websocket - em-websocket 和 javascript 客户端连接

我有一个简单的 eventmachine web socket 服务器(eventmachine 1.0.0):

我正在尝试使用以下代码通过 javascript 客户端连接到它:

使用以前版本的 safari,它与客户端未连接到服务器的最新版本完美配合。

我也尝试过使用最新的 Chrome Dev 稳定版本,但它不起作用。

Web 套接字标头已发送,但仍处于待处理状态。

如果我向网络套接字发送文本消息,我会收到INVALID_STATE_ERR: DOM Exception 11.

我看到有一个草案更改,但我认为 em-websocket 0.3.8 已经实现了它。

你能帮我解决这个问题吗?

非常感谢

0 投票
2 回答
792 浏览

ruby-on-rails - rails 服务器不会以 em-websocket 启动

我正在尝试使用 em-websocket 构建一个 rails websocket 应用程序。我已将以下代码放在文件 config/initializers/websocket.rb 中,但是当我运行“rails server”时,应用程序无法启动。如果我删除代码它开始正常。同样的事情发生在我的本地机器和服务器上。

我得到这个控制台打印出来

如果我删除上面的代码,它开始正常,我得到:

任何想法将不胜感激

0 投票
1 回答
467 浏览

ruby - 通过网络套接字扩展多通道发布/订阅

我一直在研究这个要点,它提供了通过 websockets 进行通道 pub/sub 样式通信的最小功能实现。

对于多个通道,我们可以拥有EM::Channel可以根据要求动态创建的实例的本地哈希。我关心的是如何扩展此设置以支持服务器实例集群,或者有哪些替代方案可通过可用于集群部署的 Web 套接字促进通道发布/订阅?

0 投票
2 回答
630 浏览

ruby - 如何使用 EventMachine 从循环中与客户交谈?

我想在网站上实时显示我的程序的进度(此处以循环为例)。

如果我有一个适当的 Ruby 服务器正在运行,客户端应该能够使用浏览器通过 websockets 连接到服务器,并且一旦连接,就可以实时接收有关新产生的进程的“更新”。无需轮询或 Ajax。

我对此进行测试的想法是在 EventMachine::WebSocket 和使用客户端 JavaScript 的客户端浏览器之间建立双工通信。构建一个循环,并将更新发送到浏览器客户端。

ruby_socket_server.rb:

主.js:

我希望它看起来像:

  • 服务器:我在循环 1。
  • 客户:刚刚收到循环 1 的通知。
  • 服务器:我在循环 2。
  • 客户:刚刚收到循环 2 的通知。

实际发生了什么:

  • 服务器:我在循环 1。
  • 服务器:我在循环 2。
  • 客户:刚刚收到循环 1 的通知。
  • 客户:刚刚收到循环 2 的通知。

我无法从 Ruby 循环中向客户端发送数据,即它最终发送所有数据包,但不是在每次迭代期间都按预期发送。相反,它一直等到服务器循环完成,然后背靠背发送多个调用。

我在这里做错了什么?我正在寻找的东西是否可能?关于如何破解这个坚果的任何想法都会有所帮助。

0 投票
1 回答
484 浏览

ruby-on-rails - 使用 em-websocket gem 无法将连接更改为 'ws://' RUBY

我是Ruby的新手。

我正在尝试使用 WebSocket 连接。所以我使用 em-websocket gem。我也使用瘦网络服务器。我做了一切就像例子告诉我的那样。所以请帮帮我。

但服务器不断返回我:

客户要求:

客户端代码:

这是服务器端代码: