Пример ошибки Faye Websocket?

На Faye Websocket для Ruby есть конкретный пример, который у меня не работает.

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

person CZauX    schedule 28.09.2015    source источник
comment
Добро пожаловать в СО. Вот несколько мыслей: 1. App = lambda ... это не условие, это как присваивание; 2. Судя по веб-сайту Faye, файл примера является частью примера, состоящего из нескольких файлов... Возможно, вы используете только часть кода примера...; 3. Похоже, что пример представляет собой приложение Rack, вы можете запустить его с использованием rackup или любого другого сервера, с которым, как ожидается, будет работать пример (вероятно, thin или puma).   -  person Myst    schedule 28.09.2015
comment
P.S. Вы можете получить более эффективную информацию, объяснив, что именно вы пытаетесь сделать и что вы уже пытались сделать для достижения этой цели.   -  person Myst    schedule 28.09.2015
comment
Вы правы, config.ru и app.rb — это один пример вместе, его нужно запускать одним из поддерживаемых методов. Для меня это была подробная команда 'тонкий старт -R examples/config.ru -p 7000', просто надо было сменить директорию и все заработало. Благодарю вас! Я опубликую вопрос об этом на их git.   -  person CZauX    schedule 28.09.2015


Ответы (1)


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

Команда для запуска скрипта подробно описана в 'config.ru', выкладываю ее здесь для ознакомления

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

person CZauX    schedule 28.09.2015