2015-09-28 5 views
0

Свыше Faye Websocket for Ruby, есть конкретный пример, который не работает для меня.Faye Websocket пример ошибки?

https://raw.githubusercontent.com/faye/faye-websocket-ruby/master/examples/app.rb

require 'faye/websocket' 
require 'permessage_deflate' 
require 'rack' 

static = Rack::File.new(File.dirname(__FILE__)) 
options = {:extensions => [PermessageDeflate], :ping => 5} 

App = lambda do |env| 
    if Faye::WebSocket.websocket?(env) 
    ws = Faye::WebSocket.new(env, ['irc', 'xmpp'], options) 
    p [:open, ws.url, ws.version, ws.protocol] 

    ws.onmessage = lambda do |event| 
     ws.send(event.data) 
    end 

    ws.onclose = lambda do |event| 
     p [:close, event.code, event.reason] 
     ws = nil 
    end 

    ws.rack_response 

    elsif Faye::EventSource.eventsource?(env) 
    es = Faye::EventSource.new(env) 
    time = es.last_event_id.to_i 

    p [:open, es.url, es.last_event_id] 

    loop = EM.add_periodic_timer(2) do 
     time += 1 
     es.send("Time: #{time}") 
     EM.add_timer(1) do 
     es.send('Update!!', :event => 'update', :id => time) if es 
     end 
    end 

    es.send("Welcome!\n\nThis is an EventSource server.") 

    es.onclose = lambda do |event| 
     EM.cancel_timer(loop) 
     p [:close, es.url] 
     es = nil 
    end 

    es.rack_response 

    else 
    static.call(env) 
    end 
end 

def App.log(message) 
end 

Приложение не запущено, однако условие:

App = lambda do |env| 

не удовлетворяются и не итерация. Предполагается ли, что этот файл управляется внешним источником? Отсутствует файл?

Это с запуском файла с помощью команды:

ruby app.rb 
+1

Добро пожаловать на SO. Вот несколько мыслей: 1. 'App = lambda ...' не является условием, это как назначение; 2. На веб-сайте Faye кажется, что примерный файл является частью примера, состоящего из нескольких файлов ... Возможно, вы используете только часть кода примера ...; 3. Пример представляет собой приложение Rack, вы можете запустить его с помощью 'rackup' или использовать любой сервер, на котором, как ожидается, будет работать пример (вероятно,« тонкий »или« пума »). – Myst

+1

P.S. Вы можете получить более эффективную информацию, объяснив, что именно вы пытаетесь сделать, и что вы пытались сделать для достижения этой цели. – Myst

+0

Вы правы, config.ru и app.rb - это один пример вместе, должен быть запущен с одним из поддерживаемых методов. Для меня он подробно описал команду «thin start -R examples/config.ru -p 7000», просто пришлось сменить каталог, и все сработало хорошо. Спасибо! Я расскажу вам об этом. – CZauX

ответ

0

Пример WebSocket сервер я пытался запускается при наличии как «app.rb» и файл «config.ru». Thin, faye, permessage_deflate, json, и я думаю, что сборщик должен быть установлен с «gem install», чтобы этот пример работал.

Команда для запуска сценария подробно описана в «config.ru», отправляя его здесь для справки

thin start -R examples/config.ru -p 7000