Отправленные на сервер HTML5 события с Ruby Sinatra - PullRequest
17 голосов
/ 08 марта 2011

Я новичок в Ruby и Sinatra, я пытаюсь настроить с ним простое событие, отправленное на сервер HTML5. Приведенный ниже код отлично работает в сборках для разработчиков Chrome, но не в сборках для разработчиков и Safari как в Windows7, так и в OSX..

Сообщение об ошибке в консоли браузера: «Не удалось загрузить ресурс: отменено»

 var source = new EventSource('pull');
        source.addEventListener('message', function(e) {
            console.log(e.data);

        }, false);

        source.addEventListener('open', function(e) {
            // Conn open
        }, false);

        source.addEventListener('error', function(e) {
            if (e.eventPhase == EventSource.CLOSED) {
                // Connection was closed.
            }
        }, false);

С приведенным ниже маршрутом Синатры

get '/pull' do
   content_type 'text/event-stream'
   newevent   = false
   response = "data: "+newevent.inspect+" \n\n"
end

Я пробовал подобноесерверный код с JSP и Tomcat, и он отлично работает во всех браузерах.

Что мне нужно знать о Sinatra?спасибо!

1 Ответ

25 голосов
/ 30 июня 2011

Если вы хотите поддерживать события, вам нужно создать свой собственный объект тела .Взгляните на реализацию и использование .Убедитесь, что вы запускаете его с Тонкими или Радугами.Он не будет работать с Mongrel или WEBrick.

Вы можете посмотреть презентацию на Confreaks (исходный код на GitHub ).

Обновление:Вот еще один пример (приложение для простого чата с использованием Sinatra Streaming API).

...