2012-10-30 36 views
2

我是新來的紅寶石,也許這是一個非常簡單的問題。 我想使用eventmachine爲我的測試開發模擬器。在文檔 下面我可以寫這樣的事:ruby​​-eventmachine使用start_server與實例

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 
} 

我嘗試閱讀源代碼..但對我來說太難了。 我肯定錯過了一些東西,但我不知道如何做這樣的事情。

回答

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 
} 

所以我會用自定義參數

實例行爲