2015-05-15 2 views
1

Я использую жемчужину websocket-rails для подключения к веб-разъему к моему рельсовому приложению - дело в том, что он отлично работает на моем компьютере, но на моей производственной машине это просто не сработает.websocket-rails no connections in production

При подключении - он записывает в журнал websocket_rails - что я подключен - однако, когда я пытаюсь отправить данные в соединение, он ничего не делает.

Я добавил несколько журналов, чтобы помочь мне найти проблему, и кажется, что WebsocketRails.users пуст - значит, нет никаких подключений - даже если есть.

Однако, когда я действительно отсоединяюсь от подключения к сети, он регистрирует отключение - и, видя код, он проверяет, подключен ли он до регистрации отключения, поэтому я считаю, что он подключен.

это код, который инициирует событие на связи

class Route < ActiveRecord::Base 
    acts_as :user 
    has_many :students 

    after_update :notify_location_changed, if: Proc.new { |route| route.loc_latitude_changed? || route.loc_longitude_changed? } 

    def notify_location_changed 
    logger.info "#{self.id} location_updated" 
    logger.info "connections: #{WebsocketRails.users.users}" #this is empty - even when there is a connection open - it still pings. 
    channel = WebsocketRails[self.id.to_s] 
    WebsocketRails.logger.info "sending to the following subscribers of channel #{self.id} - #{channel.subscribers}" 
    channel.subscribers.each do |connection| 
     logger.info "sending to the following connection #{connection}" 
     options = {} 
     logger.info "#{connection.data_store}" 
     user = connection.data_store[:user].actable 
     logger.info "user: #{user.to_json}" 
     data = [loc_latitude: loc_latitude - user.pick_up_lat, loc_longitude: loc_longitude - user.pick_up_long].to_json 
     options.merge! :channel => channel.name, :token => channel.token 
     options[:data] = data 
     event = WebsocketRails::Event.new :location_updated, options 
     connection.trigger event 
    end 
    end 
end 

ответ

0

Как указывалось here, websocket-rails не является активным проектом, и это последний коммит был давно.

Я бы рекомендовал использовать такие альтернативы, как Faye или Plezi.

Подключение приложения Plezi с рельсами рассматривается в файле чтения Plezi и кажется довольно простым в достижении.