3
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 다음을 제공 EventMachine, 섬유 및 페이와 간단한 스크립트가 있습니다. 나는 항상 다음과 같은 출력을 가지고있다 :
Event 1 start
Event 2 start
Event 2 finish
그 모두.
이벤트 1은 어디에서 끝나나요?
내가 뭘 잘못하고있어?
UPD : 비동기 제거를 제거하면 require 'redis/connection/synchrony'
모두 잘됩니다. 하지만 비동기가 필요해.
루비 1.9.2-p290 [x86_64에]를