问题标签 [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.
ruby - WebSockets:当客户端连接断开时如何通知所有订阅者?
我正在处理一个小的 WebSocket 聊天演示(基于此代码)。但是,似乎不起作用的部分是当客户端和服务器之间的连接关闭时,我想通知所有订阅者用户已“离开聊天室”。我认为当客户端连接断开时服务器会被通知/运行 onclose 函数,但也许这不是 WebSockets 的工作方式。
这是我的 EventMachine 代码:
ruby - Ruby:如何从同一个应用程序提供静态 HTML 和 EventMachine WebSocket 服务器?
我正在编写一个简单的聊天应用程序。唯一需要的“前端”是一个 html 文件、一个 javascript 文件和一些样式表。大多数应用程序是服务器端 EventMachine WebSocket 服务器。
我也在尝试在 Heroku 上托管它。
我目前有一个只为静态文件提供服务的 sinatra 应用程序,以及一个为 WebSocket 服务器提供服务的单独应用程序(在不同的端口上)。
有没有办法可以组合这些,以便我可以启动一个应用程序,该应用程序服务/响应端口 80(用于静态文件)和另一个端口用于 WebSocket 服务器?
ruby-on-rails - Rails 中的 EventMachine - 在哪里放置运行循环?
我试图获得一个在我运行我的 rails 服务器时运行的 EventMachine 服务器,而不是作为一个单独的进程。
因此,例如,使用此处的简单服务器示例(em-websocket),您将获得以下(独立?)ruby 代码:
假设我刚刚运行了命令“rails new em-example”,上面的代码在我的 rails 3 应用程序中的什么位置?
我想上面的代码应该理想地在一个单独的线程(或光纤..?)中运行,但我不确定它看起来如何。
我已经看到如果使用“瘦”作为我的网络服务器,这应该很容易。Heroku 似乎默认使用它,我已经安装了“瘦”gem,所以我也可以在本地对其进行测试。
html - Websockets - 保证完整的消息?
当 Web 套接字协议中触发“onmessage”事件时,您可以保证完整的消息,还是更像是一个直接的 TCP 连接,您首先缓冲数据,然后尝试提取数据包。
ruby - 如何使用 web-socket 以某种格式(JSON/XML/等)从服务器向客户端发送数据
按照em-websocket
gem 中的示例,我刚刚创建了使用 Sinatra 框架运行的简单 echo-server。问题是我不明白如何使用某种格式而不是纯文本来发送消息。目前,代码如下所示:
我想以某种格式发送消息,例如哈希:
在客户端,使用它来构建带有时间和文本 div 的漂亮消息框(在这种情况下,时间只是示例)。例如,使用
代替
ruby-on-rails - 带有 Ruby on Rails 的 em-websocket gem
我开始使用 em-websocket gem 开发基于 web-socket 的游戏。
为了测试应用程序,我通过运行启动服务器
$> 红宝石服务器.rb
然后我打开两个浏览器直接访问 html 文件(没有网络服务器)并开始播放。
但现在我想添加一个 Web 服务器、一些数据库表、另一个基于 Ruby on Rails 的 gem。
如何在我的 web-socket 服务器和我的 Ruby on Rails 应用程序之间实现通信?它们是否应该在同一台服务器上运行并作为单个进程运行?在不同的服务器上运行并通过 AJAX 进行通信?
我需要支持身份验证和其他功能,例如在游戏结束时更新数据库等。
提前致谢。
ruby-on-rails - 在薄轨上安全地停止 em-websocket
我有一个在瘦服务器上运行的 Rails 应用程序以利用 EventMachine 运行循环。问题是我希望能够包含 em-websocket 来处理来自 ws 的信息,并在不停止 EM 运行循环的情况下停止和启动 websocket。这就是我启动 websocket 的方式。
问题出在开始/停止代码中。来自 em-websocket 的文档
问题是内部 em-websocket 代码不跟踪来自 EM:start_server 的签名以便能够调用 EventMachine::stop_server(signature) 来关闭它。有没有一种方法可以在不修改 em-websocket 的情况下覆盖这些功能,以便我可以安全地启动/停止这些 websocket?我希望它的性能更像标准的 Eventmachine 服务器。
ruby-on-rails - 大量 WebSocket 连接
我正在编写一个应用程序来跟踪特定任务的用户之间推送的内容。我正在考虑使用 WebSockets 发送新内容,因为它们可供当前正在使用该应用程序执行该给定任务的所有用户使用。
我在 Rails 上写这篇文章,客户端应用程序在 iOS 上(可能也会在 Android 上)。恐怕这个 WebSocket 解决方案可能无法很好地扩展。在决定使用 WebSockets 还是使用某种轮询解决方案时,我正在寻求一些建议和要考虑的事情。
Ruby on Rails 服务器(如 Heroku)是否支持同时打开大量 WebSocket?为了争论,假设有一百万个连接。任何人都可以向我提供这些东西的任何材料吗?
如果我以这种方式构建它,它会在服务器托管上花费更多吗?
是否有可能同时维护数百万个 WebSocket?我觉得这可能不是最好的设计决策。
这是我第一次尝试正确的 Rails API。任何意见是极大的赞赏。谢谢。
ruby - 在类级别存储 eventmachine websocket 连接是否安全?
我正在编写一个聊天服务器应用程序,用户可以在其中与他的一位朋友交换消息。当用户连接时,我将他的连接存储在类变量哈希中:
@@connections[:user_id] = conn
当有人向用户发送消息时,我会在哈希上查找他的连接并通过它发送消息。有时,客户端的连接会直接断开,并且不会调用 onclose 回调。
ruby - Websockets、em-websocket 和 HAProxy 502 错误
我正在尝试在端口 80 上运行 webserver 和 websocket 服务器。为此,我使用 HAProxy 使用此配置路由连接:
我正在使用谷歌浏览器进行测试。在某些机器上我连接得很好,在其他机器上它会给我一个 502 错误并且 em-websocket 记录这个错误:
如果我停止运行代理并在端口 80 上运行 Web 套接字服务器,它工作正常,这对我来说表明问题出在代理上。我在某处读到 HAProxy 在处理 websockets 时不应在 http 模式下运行,因为升级数据包不是有效的 HTTP,这可能与我看到的问题有关吗?