2

私はルビーに不慣れで、これは非常に簡単な質問かもしれません。eventmachineを使用してテスト用のシミュレーターを開発したいと思います。ドキュメントの次の例では、次のように書くことができます。

require 'eventmachine'

class Server< EM::Connection
   def receive_data data
     send_data data
     close_connection_after_writing
   end
end
#Note that this will block current thread.
EventMachine.run {
  EventMachine.start_server '127.0.0.1','8080', Server
}

しかし、次のようなクラスのインスタンスを使用する方法があるかどうか疑問に思います。

require 'eventmachine'
class Server< EM::Connection
  attr_accessor :response
    def receive_data data
      send_data @response
      close_connection_after_writing
    end
end

server1 = Server.new
server1.response = "foo"

#Note that this will block current thread.
EventMachine.run {
  EventMachine.start_server '127.0.0.1','8080', server1
}

私はソースコードを読もうとしますが、それは私には難しすぎます。私は確かに何かが欠けていますが、私はこのようなことをする方法がわかりません。

4

1 に答える 1

6

私が言っているように、私が欠けていたものがありました。

インスタンス化するクラスのパラメータを追加できます。

  class Server< EM::Connection
    def initialize par
       puts "I'm server number#{par}"
    end
    def receive_data data
      send_data data
      close_connection_after_writing
    end
 end

EventMachine.run {
  EventMachine.start_server '127.0.0.1','8080', Server,1
}

EventMachine.run {
  EventMachine.start_server '127.0.0.1','8080', Server,2
}

だから私はパラメータでインスタンスの振る舞いをカスタマイズします

于 2012-10-30T17:43:40.883 に答える