2015-10-01 11 views
5

私はpubnubチャネルにメッセージを公開しようとしていますが、サーバに公開していません。しかし、そのローカルマシン上で絶対に動作します。私がそれを間違ってやっていることは何ですか?Pubnubは公開していません

class Message < ActiveRecord::Base 

    after_create :send_message_to_driver 

    def send_message_to_ABC 
    $pubnub.publish(
     channel: "chat_ABC", 
     message: message 
    ) do |env| 
     puts env.parsed_response 
    end 
    end 
end 

の$ pubnubはアプリに対してグローバルに初期化されています。

答えて

6

いくつかの調査とデバッグで問題は解決しました。この問題は、デフォルトでRubyの操作が非同期であるために発生していました。したがって、公開が完了する前にスクリプトが終了します。幸いなことに、このpubnubの公開方法にはhttp_syncというオプションがあります。これをtrueに設定すると、パブリッシュが完了する前にフローが終了していないことを確認します。新しいコードは

$pubnub.publish(
    http_sync: true, 
    channel: "chat_ABC", 
    message: message 
) do |env| 
    puts env.parsed_response 
end 
です
関連する問題