2016-04-02 51 views
0

Basit bir gerçek zamanlı sohbet yazıyorum, bu yüzden web-soketleri kullanmaya karar verdim. gem 'faye-rails' kullandım. Web konsolu, POST http://khersonchat.herokuapp.com/faye [HTTP/1.1 200 OK 170ms] çalışır, ancak bir ileti gönderdiğimde bir hata olduğunu gösterir: While loading the page connection ws://khersonchat.herokuapp.com/faye was broken (Rusça'dan çevrilmiş ). Bu yüzden bir mesaj gönderdiğimde, sayfanın tamamı yeniden yükleniyor ve diğer kişilerin mesajlarını görmek için bir sayfayı yeniden yüklemem gerekiyor.Faye düzgün çalışmıyor

messages_controller.rb:

def create 
    respond_to do |format| 
     if current_user 
      @message = current_user.messages.build(message_params) 
      if @message.save 
       flash[:success] = 'Message sent' 
      else 
       flash[:error] = 'Oops, an error :(' 
      end 
      format.html {redirect_to root_path} 
      format.js 
     else 
      format.html {redirect_to root_path} 
      format.js {render nothing: true} 
     end 
    end 
end 

application.js:

//= require jquery 
//= require jquery_ujs 
//= require faye 
//= require messages 
//= require_self 
//= require turbolinks 

messages.coffee:

window.client = new Faye.Client('/faye') 

jQuery -> 
    $('#new_message').submit -> 
     $(this).find("input[type='submit']").val('Sending...').prop('disabled', true) 
    try 
     client.unsubscribe('/messages') 
    catch 
     console?.log "Can't unsubscribe" 

    client.subscribe '/messages', (payload) -> 
     $('#messages').find('.media-list').append(payload.message) if payload.message 

create.js.erb

publisher = client.publish('/messages', { 
    message: '<%= j render @message %>' 
}); 

publisher.callback(function() { 
    $("#message_body").val(''); 
    $("#new_message").find("input[type='submit']").val('Send').prop('disabled', false) 
}); 

publisher.errback(function() { 
    alert('Oops, an error'); 
}); 

https://github.com/AlexNikolaev94/chatclone.git - yukarı güncel kaynak kodu

önemli! sohbet bir sosyal ağ Vkontakte (vk.com) kullanarak, omniauth aracılığıyla doğrular, böylece Git saklanan sürüm localhost'a erişimi olan

+0

Görünüşe göre Faye sadece mesajların yayınlanmasına izin vermiyor, ve konuyla ilgili hiç bir fikrim yok: (her şeyi iki kere kontrol ettim, ama sadece işe yaramıyor) – AlexNikolaev94

cevap