Подтвердить что ты не робот

Отсутствует заголовок 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

Это кажется прекрасным. Как узнать, правильно ли загружены настройки?

Любые подсказки о том, где искать следующий, будут высоко оценены.

4b9b3361

Ответ 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