我正在使用em-ws-client
gem,尽管我认为我的问题比这更笼统。我正在尝试从 EventMachine 接收块外部发送数据,但是发送数据需要很长时间(~20s):
require "em-ws-client"
m = Mutex.new
c = ConditionVariable.new
Thread.new do
EM.run do
@ws = EM::WebSocketClient.new("ws://echo.websocket.org")
@ws.onopen do
puts "connected"
m.synchronize { c.broadcast }
end
@ws.onmessage do |msg, binary|
puts msg
end
end
end
m.synchronize { c.wait(m) }
@ws.send_message "test"
sleep 100
当我将其@ws.send_message "test"
直接放入onopen
方法中时,它工作得很好。我不明白为什么我的版本不起作用。我在 EventMachine 中发现了这个问题,但我不确定它是否相关。
为什么需要这么长时间,我该如何解决?