2016-04-02 17 views
0

Ich schreibe einen einfachen Echtzeit-Chat, also entschied ich mich für Web-Sockets. Ich habe gem 'faye-rails' verwendet. Web-Konsole zeigt, dass es funktioniert POST http://khersonchat.herokuapp.com/faye [HTTP/1.1 200 OK 170ms], aber wenn ich eine Nachricht senden, gibt es einen Fehler: While loading the page connection ws://khersonchat.herokuapp.com/faye was broken (übersetzt aus dem Russischen). Wenn ich also eine Nachricht sende, wird die ganze Seite noch einmal geladen, und ich muss eine Seite neu laden, um die Nachrichten anderer Leute zu sehen.Faye funktioniert nicht richtig

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 - Quellcode up-to-date

wichtig! der Chat authentifiziert über omniauth, ein soziales Netzwerk mit Vkontakte (vk.com), so dass die Version in git gespeichert hat den Zugang

+0

Es scheint, dass Faye einfach nicht die Nachrichten zu veröffentlichen, und ich habe keine Ahnung, was ist los :(Doppel-Dreifach-geprüft alles, aber es funktioniert einfach nicht – AlexNikolaev94

Antwort

0

Das Problem war, mit CSRF-Schutz auf localhost, so dass das Thema weiter here