Отсутствует заголовок Websocket
Я использую драгоценный камень "faye" с Rails 3.2.13. В разработке я запускаю faye на localhost: 9292 и мое приложение на localhost: 3000. Я могу активировать всплывающие окна с запросом на завивки из командной строки, но я не могу установить соединение из своего приложения. Ошибка, которую я получаю в консоли:
Соединение с WebSocket с 'ws://localhost: 9292/faye' не выполнено: Ошибка во время рукопожатия WebSocket: заголовок 'Upgrade' отсутствует
Я пытаюсь определить заголовок для faye в файле application.js:
$(function() {
var faye = new Faye.Client("http://localhost:9292/faye");
faye.setHeader("Access-Control-Allow-Origin", "http://localhost:3000");
faye.subscribe('/messages', function (data) {
alert(data);
});
});
Правильно ли это добавить заголовок?
Я нашел обсуждение аналогичной проблемы здесь: https://github.com/faye/faye/issues/222 В этом случае ошибка, казалось, была связана с установками ssl, которые не были загружен. Я проверил свой каталог gem lib и нашел
def ssl?
scheme == 'https'
end
Это кажется прекрасным. Как узнать, правильно ли загружены настройки?
Любые подсказки о том, где искать следующий, будут высоко оценены.
Ответы
Ответ 1
У меня была такая же проблема, когда я писал Ryan Bates railscast: http://railscasts.com/episodes/260-messaging-with-faye
Сервер веб-сокетов Faye требует, чтобы адаптер работал на тонком веб-сервере и отправлял заголовок обновления.
Добавьте эту строку в файл Faye rackup (.ru
):
Faye::WebSocket.load_adapter('thin')
Я нашел это решение здесь: https://github.com/ryanb/private_pub/issues/39#issuecomment-4225647