问题标签 [eventmachine]
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 - Ruby 数据包缓冲和拆分
所以,我想这有点宽泛,但我会尽量缩小范围。我有一台服务器(带有 EventMachine),有时数据包会被拆分,但有时它们会被缓冲。所以,我尝试创建一个可以缓冲/取消缓冲它们的函数。我确实设法制作了一些东西,但是它没有“按预期”工作。老实说,我什至怀疑我什至可以称之为“几乎没有功能”。
首先,我想指出数据包结构:
- 数据包的前四个字节是它的 ID,或数据包的名称 (
name
)。 - 接下来的四个字节是数据包的“msg”部分的长度(
len
)。 - msg 部分之前的最后四个字节是一个引用字段,它有多种用途(
ref
)。
注意:lenf
是 len 的原始格式,所以是一个字符串,我认为这并不重要。
缓冲代码
TLDR
如何在 Ruby 中拆分缓冲和缓冲拆分数据包/数据(由 EventMachine 传递)?
更新:数据包通过 TCP 发送。数据来自用 C 语言制作的客户端,所以是的,它是一个字节流。
我不确定到底出了什么问题,但该方法似乎没有正确拆分或缓冲数据包。它在接收少量数据时工作正常(我假设这些数据既不是缓冲的也不是拆分的)。
有时它甚至可以成功拆分数据包,如果它们被缓冲,但缓冲似乎根本不起作用
我很确定我在这里搞砸了一些“逻辑”部分,但我就是不知道它是什么。任何帮助将不胜感激。
谢谢
ruby - 无法使用 OpenSSL 在 Synology DiskStation 上安装 Eventmachine
我正在尝试在我的 Synology DiskStation DS211 基于 Linux 的 NAS 上安装 EventMachine ruby gem,但在尝试为本机扩展创建 Makefile 时安装失败,说:
mkmf.log 的内容:
Ruby 和 OpenSSL 均已成功安装在使用 Optwareipkg
到默认/opt
目录的机器上。
我怀疑由于 OpenSSL 安装在意外目录中而导致 EventMachine 失败,但尚不清楚指定正确位置所需的配置选项和值的组合。
一些环境细节:
有没有其他人在这种环境中安装 EventMachine 有运气?
ruby - 用上帝终止非守护进程的正确方法是什么?
我有一门课,我正在使用上帝进行监控。这是它的结构:
lib/my_class.rb
这就是我与上帝一起运行它的方式:
配置/my_config.god
结尾
由于我没有指定停止(我不知道如何),如果失败,上帝会发送 aSIGTERM
然后 a来停止该过程。SIGKILL
这是我应该如何处理非守护进程吗?
sinatra - 可以在瘦 webapp 中使用 EM 调用吗?
是否可以在 Thin 内部使用 EventMachine 调用而无需额外初始化?
目前,我有一个 Thin 运行的 Sinatra 应用程序(作为服务运行)。当我尝试使用EventMachine.connect_unix_domain
时,我得到eventmachine not initialized
......即使 Thin(可能是 EventMachine)正在运行。
ruby - 带有 DRb 或 EventMachine 的 QtRuby
我想使用 Qt 在 Ruby 中编写一个应用程序,它将通过网络与其他实例进行通信。
如何将 Qt 的事件循环与 DRb 或 EventMachine 集成?
编辑:
我找到了答案,当我有更多时间时,我会发布它
ruby - EventMachine UNIX 套接字连接:如何在 Thin 作为服务运行时使用它们?
EventMachine.connect_unix_domain
在将 Thin 作为服务运行时如何使用(使用下面的初始化脚本(摘录)和配置)。下面的代码就是问题所在(我得到一个eventmachine not initialized: evma_connect_to_unix_server
错误)。第二个代码示例有效,但不允许我守护瘦(我不认为)。Thin 是否还没有正在运行的 EventMachine 实例?
更新:奇怪的是:停止服务器(使用service thin stop
),似乎进入 config.ru 文件并运行应用程序(所以它可以工作,直到stop
命令超时并终止进程)。当薄停止可能导致这种行为时会发生什么?
有问题的代码
工作代码
初始化脚本摘录
精简配置
ruby-on-rails - Rails 中的 Async_Sinatra:异步操作无法写入共享会话
我在 Rails 项目中有一个 Sinatra 类。它使用 eventmachine 和 async_sinatra 对外部站点进行异步调用。我想写入一个会话对象(理想情况下,与 Rails 使用的对象相同),但到目前为止我只能:
- 从 Rails 写入单独的会话对象(默认情况下,Sinatra 将其会话命名为与 Rails 不同的名称)
- 仅针对同步调用写入同一会话
当我进行异步调用时,用 async_sinatra 代码编写的会话不会被推送到客户端机器。我怀疑正在发生两件事之一:
标头已经发送到客户端,存储会话的局部变量(在 Sinatra 中)将在操作结束时刷新。客户端永远不会看到来自服务器的将这些数据保存到 cookie 的请求。
标头被发送到客户端,但 Rails 立即发送另一个,指示客户端将 Rails 存储在其变量中的内容写入 cookie
session
,覆盖 Sinatra 写入的内容。
无论哪种方式,我都想在 Sinatra 和 Rails 中获得简单的会话功能。解释我做错了什么也很好:)
代码的完整工作副本在 github 上,但我相信问题出在这段代码中:
编辑 7/15:
更改了 Github 上的代码以包含 Async-Rack。当会话不与 Rails 共享时,Async-sinatra 可以写入会话。比较master
和segmented_sessions
分支的行为差异。(或在master
分支上,更改use ActionDispatch::Session::CookieStore
为enable :sessions
)
ruby - Ruby:EventMachine未加载
更新:
我找到了简单的答案,这完全是我自己的错:我将上面的代码存储在一个名为“eventmachine.rb”的文件中。因此,当我需要“eventmachine”时,它只是导入了相同的文件,该文件不包含 EventMachine 的定义。
所以这并不是一篇关于 EventMachine 的文章。
原帖:
对不起,但发生了什么事?
给
当我运行“ruby myfile.rb”时,在 TextMate 和控制台上。
但是如果我在 IRB 中输入相同的内容,我会得到
.
...
我非常沮丧,以至于我按照http://blog.carlmercier.com/2007/12/14/how-to-fix-that-rubygems-mess-on-leopard/上的轻率说明进行操作——清除我的 Ruby 和Rubygems 环境并从 MacPorts 重新安装它们。IRB 仍然有效,TextMate/commandline 仍然以同样的方式失败。我什至将我的 TextMate PATH 减少到现在安装了 Ruby、Gem 和 IRB 的一个位置:/opt/local/bin——这就是 which 报告的内容。
最后,当我
在 IRB、TextMate 或控制台上,我得到相同的路径。
ruby - 事件机器:并发
我有一个简单的程序,它接收连接,进行一些处理并在标准端口上发送回响应。由于这是同步完成的,如果一个请求花费的时间太长,则不会处理并发请求。
无论是否发生任何阻塞请求,都可以推迟允许同时处理多个请求的方式吗?
谢谢,
ruby - 将大量消息发布到 AMQP 队列
使用 Ruby amqp 库的 v0.7.1 和 Ruby 1.8.7,我试图将大量(数百万)短(约 40 字节)消息发布到 RabbitMQ 服务器。我的程序的主循环(嗯,不是真正的循环,但仍然)看起来像这样:
代码开始处理结果数组就好了,但过了一段时间(通常,在 12k 条消息之后)它会因以下错误而死
队列中不存储任何消息。该错误似乎只是在从程序到队列服务器的网络活动开始时发生。
我究竟做错了什么?