4

我刚刚开始使用 Sinatra,并希望能够测试一个正在检查 websocket 的方法,如下面的代码片段所示:

require 'sinatra'
require 'sinatra-websocket'

set :server, 'thin'
set :sockets, []

get '/' do
    if !request.websocket?
        erb :index
    else
        request.websocket do |ws|
            ws.onopen do
                ws.send("Hello World!")
                settings.sockets << ws
            end
            ws.onmessage do |msg|
                EM.next_tick { settings.sockets.each{|s| s.send(msg) } }
            end
            ws.onclose do
                warn("websocket closed")
                settings.sockets.delete(ws)
            end
        end
    end
end

(从这个问题中提取的代码,但几乎与我的用法相同)

我正在使用 MiniTest 进行测试,并希望有一种直接的方法可以使用模拟 websocket 传递请求,从而超越 if !request.websocket? 有条件的。

一个带有最简单示例的片段会很棒,但任何指针都非常感谢!

免责声明:我是 Ruby 的新手,虽然我很喜欢它,虽然我没有看到任何明确的使用示例,但这似乎很明显——因此这个问题!

4

0 回答 0