0

自述文件有以下faye-websocket-ruby示例。代码行是什么

p [:close, event.code, event.reason]

do 是什么p意思?还有什么ws.rack_response做,为什么有必要?

# app.rb
require 'faye/websocket'

App = lambda do |env|
  if Faye::WebSocket.websocket?(env)
    ws = Faye::WebSocket.new(env)

    ws.on :message do |event|
      ws.send(event.data)
    end

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

    # Return async Rack response
    ws.rack_response

  else
    # Normal HTTP request
    [200, {'Content-Type' => 'text/plain'}, ['Hello']]
  end
end
4

1 回答 1

1

p()Kernel类的实例方法,请参见此处。它用于打印(就像puts那样),但它调用inspect参数上的方法。它对调试很有用,因为您可以准确地看到值是什么,因为 puts 整数 1 将被打印为"1"不是它的值。

每个 Rack 应用程序都必须响应一个调用的方法,该方法call接受环境env并返回表单的数组

[http_code, headers, body]

在上面的示例中,您可以看到该App对象是一个lambda接受env并返回上述形式的数组。因此它是一个 Rack 应用程序,因为 alambda有一个方法call

rack_response如您所见,该方法仅返回与机架兼容的数组

有关机架应用程序的更多信息,请点击此处

于 2013-10-28T08:06:04.927 回答