jjzjj

EventMachine

全部标签

ruby-on-rails - 从 Ruby on Rails 应用程序启动和停止 eventmachine 服务器的最佳选择是什么

更正:具体来说,我希望启动和停止EventMachine(EM)来自RubyonRailsController。(有人告诉我,'Thin'会很适合这个。)注意:此EM服务器与Mongrel是分开的运行RubyonRails应用程序的服务器。(EM服务器正在接受来自Arduino微Controller的连接。)作为服务器运行“Thin”。我应该能够接受HTTP请求和Arduino的连接。#StartsServerdefstart_control_serverEventMachine::run{@EchoServer=EventMachine::start_server"0.0.0.0",

带 PostgreSQL 的 Ruby EventMachine

我知道对于mysqlem-mysql作为MySQL和ActiveRecord的异步接口(interface)驱动程序存在,通过一些修改,可以立即使用。我相信Sequel已经具备了这种能力。我还了解到pggem公开了PostgreSQL的native异步API。我的问题:当支持数据库是PostgreSQL时,是否有任何RubyORM可以在本地与EventMachine互操作?如果不是,需要做些什么来改造Sequel以支持异步PostgreSQL?事件记录? 最佳答案 这看起来像是与ActiveRecord一起工作:https://gi

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

我正在使用eventmachine读取HornetQ主题,推送到由EMwebsocket连接订阅的channel。我需要防止@topic.receive循环阻塞,所以创建了一个proc并在没有回调的情况下调用EventMachine.defer。这将无限期地运行。这很好用。我也可以只使用Thread.new。我的问题是,这是从流/队列中读取并将数据传递到channel的正确方法吗?是否有更好的/任何其他方法来执行此操作?require'em-websocket'require'torquebox-messaging'classWebsocketServerdefinitialize@c

ruby - EventMachine Web 套接字客户端 TLS 连接

我很难让EventMachineWeb套接字客户端使用TLS连接到安全的Web套接字服务器wss://。我有一个EventMachine网络套接字服务器设置并且运行良好。我可以在浏览器中使用javascript,连接效果很好。只是无法使EventMachineWeb套接字客户端连接正常工作。我认为这可能与证书有关,但不确定如何判断。这是我的客户端代码:require'eventmachine'require'em-websocket-client'EM.rundoconn=EventMachine::WebSocketClient.connect("ws://0.0.0.0:9110/

ruby - 连接到后台 EventMachine 应用程序以进行单元测试

我正在使用EventMachine编写headlessRuby应用程序通过套接字进行通信。我想为这个应用程序编写一些单元测试。这意味着我的Ruby测试脚本需要在后台启动该应用程序,与其执行套接字通信,然后关闭该进程。此代码失败。套接字连接被拒绝。require'socket'PORT=7331CMD=File.expand_path("../../bin/rb3jay",__FILE__)@thread=Thread.new{`#{CMD}-D--port#{PORT}`}@socket=TCPSocket.open('localhost',PORT)#=>Errno::ECONNRE

ruby - 使用 EventMachine 和 RabbitMQ 的 RPC

我开始尝试使用RabbitMQRPCsamplecode在AMQPgem文档中提供,尝试编写执行同步远程调用的非常简单的代码:require"amqp"moduleRPCclassBaseincludeEM::Deferrabledefrabbit(rabbit_callback)rabbit_loop=Proc.new{AMQP.connectdo|connection|AMQP::Channel.new(connection)do|channel|channel.queue("rpc.queue",:exclusive=>false,:durable=>true)do|reques

ruby - 如何在eventmachine中实现无限循环

我需要在不断读取redis队列的eventmachine之上有一个无限循环。下面是我的代码。递归是正确的方法吗?我尝试了loopdo循环,但无法让它以这种方式工作。require'em-hiredis'defreadd=@redis.blpop'queue',0d.callbackdo|_,value|pvaluereadend.errbackdo|e|peEM.next_tick{read}endendEM.rundo@redis=EM::Hiredis.connectreadend 最佳答案 最好订阅redispub/sub队列

ruby - 如何在 Sinatra 中运行 EventMachine 和服务页面?

我正在构建一个使用TweetStream的Sinatra应用程序(它使用EventMachine监听推文)。我也希望该应用程序像普通Sinatra应用程序一样提供页面服务,但似乎Sinatra在“监听”推文时无法“监听”页面请求。我可以通过使用不同的服务器或以不同的方式构建我的应用程序来解决这个问题吗?我试过使用WebBrick和Thin。这基本上是我正在做的:classApp 最佳答案 您可以在eventmachine中安装Sinatra应用程序(为您提供一个支持EM即Thin的网络服务器)。然后,您应该可以从Sinatra应用程

ruby - 在 eventmachine 中使用 thin 和 rainbows 异步 sinatra。为什么越瘦越快?

我刚刚启动了asyncsinatrabenchmarkbetweenthinandrainwbows使用eventmachine。有人可以解释为什么Thin比具有eventmachine和四个work_processes的Rainbows快吗?我也用一个work_processes尝试过,但结果没有改变。瘦还是更快。提前致谢弗朗切斯科 最佳答案 因为我还没有针对这个用例分析Rainbows。我建议埃里克如何增加支持,但还没有(我想现在已经一年多了:-/)有时间研究它。Thin是一个非常轻量级的服务器,开销可能更少。它也可能是异常的事

Ruby EventMachine - 如何将值从 EM::Deferrable 返回到主 EM 循环?

我现在正在使用EventMachine玩了几天,恕我直言,它的学习曲线很陡;-)我尝试通过触发回调中需要的HttpHeaderCrawler.query()来返回哈希。但是在这种情况下我得到的不是散列{'http_status'=>xxx,'http_version'=>xxx}而是一个EventMachine::HttpClient对象本身。我想保持EM.runblock干净,并想在自己的类/模块中执行所有逻辑,那么如何将这样的值返回到主循环中以通过回调访问它?非常感谢;-)#!/usr/bin/envrubyrequire'eventmachine'require'em-http-