faye-websocket-ruby
的{{3}}具有以下示例。什么是代码行
p [:close, event.code, event.reason]
做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
答案 0 :(得分:1)
p()
是Kernel
类see here的实例方法。它用于打印(如puts
),但它在参数上调用inspect
方法。它对于调试很有用,因为你可以准确地看到值是什么,因为使用puts,整数1将打印为"1"
,而不是它。
每个Rack应用程序必须响应一个名为call
的方法,该方法接受环境env
并返回一个表单数组
[http_code, headers, body]
在上面的示例中,您可以看到App
对象是lambda
接受env
并返回上述表单的数组。因此,如果lambda
具有方法call
,则它是Rack应用程序。
rack_response
方法只会返回机架兼容阵列,因为您可以看到HERE。
有关Rack应用程序的更多信息HERE。