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
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