2012-03-04 58 views
3

我有EventMachine的,纖維和王菲簡單的腳本紅寶石纖維和王菲

require "faye" 
require "em-synchrony" 
require "hiredis" 
require 'redis' 
require 'redis/connection/synchrony' 

faye = Faye::Client.new 'http://localhost:9292/faye' 
redis = Redis.new 

EM.synchrony do 

    faye.subscribe('/event_1') do |message| 
    Fiber.new do 
     puts "Event 1 start" 
     user_id = redis.hget 'myhash', message.client_id 
     puts "Event 1 finish" 
    end.resume 
    end 

    faye.subscribe('/event_2') do |message| 
    Fiber.new do 
     puts "Event 2 start" 
     user_id = redis.hget 'myhash', message.client_id 
     puts "Event 2 finish" 
    end.resume 
    end # subscribe 

end #EM.synchrony 

event_1至上,event_2旁邊(非常小的區間)
當我運行它和事件的激發。我總是有這樣的輸出:

Event 1 start 
Event 2 start 
Event 2 finish 

那就是所有。
事件1在哪裏完成?
我做錯了什麼?

UPD:如果我刪除異步刪除require 'redis/connection/synchrony'所有的作品很好。但我需要這個異步。

紅寶石1.9.2-P290 [x86_64的]

回答

1

答案是使用同步性連接池。