【问题标题】:Faye Websocket example bug?Faye Websocket 示例错误?
【发布时间】:2015-12-25 05:02:25
【问题描述】:

Faye Websocket for 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

【问题讨论】:

  • 欢迎来到 SO。这里有一些想法: 1. App = lambda ... 不是条件,它是赋值; 2. 从 Faye 网站看来,示例文件是由多个文件组成的示例的一部分……您可能只运行了示例代码的一部分……; 3. 该示例似乎是一个 Rack 应用程序,您可以考虑使用rackup 或使用该示例预期使用的任何服务器(可能是thinpuma)运行它。
  • P.S.通过解释您正在尝试做什么以及到目前为止您为实现该目标所做的努力,您可能会获得更有效的信息。
  • 你是对的,config.ru 和 app.rb 是一个例子,必须使用支持的方法之一运行。对我来说,它详细说明了命令“thin start -R examples/config.ru -p 7000”,只需要更改目录,一切正常。谢谢!我会在他们的 git 上发布一个关于它的问题。

标签: ruby websocket faye ruby-2.2


【解决方案1】:

我尝试的 websocket 服务器示例是通过同时拥有“app.rb”和“config.ru”文件来运行的。 Thin、faye、permessage_deflate、json,我认为必须使用“gem install”安装 bundler 才能使这个示例正常工作。

运行脚本的命令在'config.ru'中有详细说明,在这里发布以供参考

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多