在ruby中用faye-websocket创建一个类

时间:2017-02-08 01:30:39

标签: ruby websocket eventmachine faye

我对事件驱动编程没有经验,我很难理解如何在faye-websocket之上编写一个类来隐藏我正在做的事情的复杂性。以下是我想要做的事情:

require 'faye/websocket'
require 'eventmachine'
require 'pp'

class Rubix

def initialize(url, options)
@response = {}
EM.run {
  ws = Faye::WebSocket::Client.new(url, nil, options)

  ws.on :open do |event|
...
  end

  ws.on :error do |event|
    p [:error]
  end

  ws.on :message do |event|
    resp = JSON.parse(event.data)
    rid = resp['id']
    response[rid] = resp
  end

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

}

end

def call_qes(json_rpc, id)
  ws.send(json_rpc)
  while @response[id].nil?
    sleep(1)
  end
  resp = @response.delete(id)
  return resp
end

end

这是一种有效的方法吗?如果不是,我应该如何在这周围放一层抽象?

感谢。

0 个答案:

没有答案