问题标签 [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 投票
0 回答
501 浏览

ruby - 带有私人频道的 em-websocket

我需要创建一个 web-socket 服务器,我打算使用 em-websocket。我需要支持私人频道,也就是说我应该能够向一个特定的频道或订阅者发送消息。

有很多很好的聊天示例处于广播模式,即。他们将响应发送给所有连接的客户端,但我需要以某种方式跟踪每个连接的客户端,并分别响应每个客户端。换句话说,我需要为每个客户端一个私有通道,这样我就可以分别响应每个客户端,而不是向所有连接的客户端广播,使每个 web-socket 连接都是唯一的

任何人都可以指导我实现这一目标的正确方向,或者可能是一些例子或要点。

问候。

0 投票
0 回答
488 浏览

javascript - 设置 websockets 服务器

这是我第一次使用 websockets,我无法让我的服务器正常工作。下面是我从这个 github 页面em-websocket复制的简单服务器。它现在基本上没有变化,所以它看起来像这样:

html然后我从这个简单的 echo test复制了,只需将 url 从更改ws://echo.websocket.orgws://localhost:3000/websocket.rb(.rb 文件位于app我的 Rails 项目的目录中)。

当我从该页面运行测试时,我得到以下结果:

由于此测试中的数据是硬编码的,因此我预计SENTRESPONSE消息是相同的。但是,我收到了令人困惑的消息,该消息以数据开头,client_connected但只包含null数据。

谁能告诉我发生了什么?我是否连接到我的“服务器”(websockets.rb文件),如果是,我是否只需要对代码进行一些调整,例如创建一个reply方法?同样,这是我第一次尝试使用这项技术,所以如果我在这篇文章中遗漏了任何内容,我深表歉意。

为了更好地衡量,这是在echo测试中运行的代码。

0 投票
2 回答
622 浏览

jruby - 为什么我不能在 JRuby 上运行 em-websocket-server?

我正在通过 rvm 运行 JRuby-1.7.3。我已经成功安装了em-websocket-server gem。我可以通过运行$ gem list来验证它是否在我当前的 gemset中。

我的代码是这样的:

当我尝试运行它时,我收到以下错误:

LoadError: no such file to load -- em-websocket-server require at org/jruby/RubyKernel.java:1027 require at /home/dev1/.rvm/rubies/jruby-1.7.3/lib/ruby/shared/rubygems /custom_require.rb:36

有什么建议么?

0 投票
1 回答
4113 浏览

javascript - WebSocket 与 Ruby 和 EM::WebSocket::Server 握手

我正在尝试在 JavaScript 中针对我的 Rails 应用程序创建一个简单的 WebSocket 连接。我得到以下信息:

WebSocket 连接到“ws://localhost:4000/”失败:WebSocket 握手期间出错:“Sec-WebSocket-Accept”标头丢失

我究竟做错了什么?这是我的代码:

JavaScript:

红宝石:

握手标头是每个Wikipedia

0 投票
1 回答
513 浏览

ruby - 使用 sinatra-websocket 在不同的通道上发送消息

有没有办法使用sinatra-websocket gem 在不同的频道上发送消息?

基本上我正在尝试用 sinatra-websocket 替换 Pusher。下面是我对 Pusher 所做的事情:

在这个 sinatra-websocket 片段中,该语法的等价物是什么?

0 投票
2 回答
623 浏览

ruby - 使用线程在 websocket 中发送多个消息

我正在使用 em-websocket gem 制作一个 Ruby 服务器。当客户端发送一些消息(例如“线程”)时,服务器会创建两个不同的线程并将两个 anwsers 并行发送到客户端(我实际上正在研究多线程和 websockets)。这是我的代码:

它是如何执行的:

  • 我正在向服务器发送“线程”消息
  • 在我的控制台中一秒钟后,我看到打印的字符串“1”。又过了一秒钟,我看到“2”。
  • 只有在那之后,两条消息才会同时发送到客户端。

问题是我想在发送调试输出“1”和“2”的同时发送消息。

我的 Ruby 版本是 1.9.3p194。

0 投票
1 回答
1354 浏览

ruby-on-rails - 如何通过 Rails 实现基于 websocket 的推送服务?

我正在构建一个像 WhatsApp 这样的消息传递应用程序。我的目标是通过 Rails 仅公开 REST API,并通过 websockets 向连接的客户端“推送通知”。因此客户端仅使用 REST API 与服务器通信。只有服务器通过 websocket 发送数据。客户端只能从中接收数据。

目前,我已经构建了一个 eventmachine 服务器,用于监听 websocket 连接和 Unix 域套接字连接。当客户端在 REST API 上执行请求时,Rails 连接到 Unix 域套接字,以告诉事件机器需要通过 websocket 通知哪些连接的客户端。

我关心的是它在生产中的表现(我的服务器运行 Apache Passenger)。所以我正在寻找一些项目来解决我的问题。我看了一下 Faye,但我不明白如何强制它从外部进程(在执行请求时可能是 rails)向连接的客户端发送通知。有任何想法吗?

0 投票
0 回答
1626 浏览

javascript - 如何关闭 websocket 并释放端口

我在某个端口下打开了 websocket,当客户端 web 浏览器关闭时,我希望 websocket 干净地关闭,以便服务器程序继续运行并接受新的连接。

现在,我的客户端代码如下:

当我运行服务器并打开网络浏览器进行连接时,它第一次工作。然后,在我关闭浏览器并尝试再次连接后,由于使用了端口,我收到错误消息。这意味着,当我在第一次连接后关闭浏览器时,websocketws并没有完全关闭。我正在使用 Google Chrome,并且我读到 Chrome disables onbeforeunload,因此绑定到该事件的函数可能不会被执行。ws.onclose我可以从关闭浏览器时执行的警报消息中确认。如何使 websocket 干净地关闭并在浏览器关闭时释放端口?我是否也必须在服务器端做一些事情?

0 投票
1 回答
160 浏览

ruby-on-rails - Ruby - 为 Websocket 加密生成素数

我正在用 Ruby 创建一个 WebSocket 服务器,我想加密服务器和客户端之间的字符串消息。我买不起证书,所以我想我会使用模数创建一个加密算法。

我需要为这个算法生成大素数。我知道 Ruby 有一个内置的 Primes 函数,但我不确定它是否可以生成 50 到 60 位数字。Primes 的内置功能对此有好处吗?

如果有人可以提供更好的方法来免费加密我的 WS 消息(并在另一边解密),我也会接受 :)

0 投票
2 回答
744 浏览

ruby - 在不同的线程中运行 websocket onmessage

我在服务器上使用 websocket,如下所示。它响应onmessage事件,并根据消息进行不同的任务:

每次执行每个onmessage事件的线程(如上所述)都是相同的,并且它们与主线程相同(B如上所述)。CA

我想B在一个单独的线程中执行代码作为C. 一种方法是将操作放入新线程中,如下所示BC

但是每次发生事件时创建一个新线程似乎很重,并且使响应变慢。因此,我希望在 中处理的所有事件之间共享一个线程onmessageB并在中处理的所有事件之间共享另一个线程C

什么是这样做的好方法?或者,是否有更好的结构以onmessage相互非阻塞的方式响应 websocket 事件?