2012-03-11 2 views
1

난 FAYE 레일 애플 리케이션을 사용하고 있습니다 그리고 그게 나를 귀찮게하는 유일한 일은 내가 캔트 만들거나 메시지를 수신 모델 변경.Faye 및 귀하의 레일 애플 리케이션에서 모델을 변경

마치 https://github.com/jamesotron/faye-rails 과 같아야하지만 다소 번거롭습니다.

확장 프로그램을 통해 모델을 업데이트 할 수있는 방법이 있습니까? 이 같은 아마 뭔가 :

require 'faye' 
require './app/models/message.rb' 
Faye::WebSocket.load_adapter('thin') 
require File.expand_path('../config/initializers/faye_token.rb', __FILE__) 

class MsgMonitor 
    def incoming(message, callback) 
    Message.create(:name=>message.to_s) 
    callback.call(message) 
    end 
end 

faye_server = Faye::RackAdapter.new(:mount => '/faye', :timeout => 45) 
faye_server.add_extension(ServerAuth.new) 
faye_server.add_extension(MsgMonitor.new) 
run faye_server 

하지만 오류가 있습니다. 그렇게 잘못하면 전체 레일 환경을로드해야합니다 (실제로 필요합니다).

어떤 도움이 높게 평가 될 것입니다 ....

PS 구글 그룹 기사 http://groups.google.com/group/faye-users/browse_thread/thread/620ee6440422687a?pli=1 를 사용하여 채널로 subsribe을 시도하지만 여전히 캔트 그것을 얻. 구독했지만 게시하지는 않습니다.

답변

0

나를 위해 일해 온 것은 faye 서버가 메시지를 전달하고 유효성 검사 만하는 것입니다. 성공하면 resque가 처리하는 것과 동일한 방식으로 redis에 저장합니다.

장시간 실행하는 작업이 사용자의 연결 속도를 늦추지 않으므로 추가 처리가 필요할 경우 항상 더 많은 작업자를 추가 할 수 있다는 이점이 있습니다. 내 첫 번째 확장의 수신 방법의 상단에

나는

$redis ||= EM::Hiredis.connect @options[:redis] 

다음 새 EM-레디 스 연결을 만들 내 테스트를 통과하면 내가 사용을 resque 형식 레디 스에 저장합니다. 내가 전에 페이 init을 할 수 있도록 내가 EM.synchrony와 위의 포장

https://github.com/SponsorPay/em-resque#in-a-rails-3-app-as-a-gem

내가 스크립트/faye_worker에 다음 코드를 사용하여 사용자에게 응용 프로그램 내 레일 밖으로 전송

m = {'class' => "Message", 'args' => ['handle_message', {name: message.to_s}.to_json]} 
$redis.rpush("resque:queue:faye", m.to_json) 
$redis.sadd("resque:queues","faye") 

worker

모델에서 메시지를 보내려면 비동기 리 큐 큐로 보내면됩니다.

+0

와우, 나는 그것을 조사해야한다! – prikha

관련 문제