2011-03-01 85 views
1

我有一個eventmachine應用程序,其中一個腳本正在從文件中讀取數據,並將數據逐行發送到另一個腳本,並且「服務器」腳本正在處理該數據。不幸的是,「服務器」腳本無法執行receive_data。我知道正在建立連接,因爲它會生成post_init,並且我知道發件人腳本正在發送數據。這裏是我的一些代碼以及我如何啓動服務器。eventmachine服務器無法執行receive_data

module BT_Server 
    def post_init 
     puts "-- someone connected to the echo server!" 
    end 
    def receive_data(data) 
     puts "hi" 
     int, time, *int_macs = data.split("-") 
     # more stuff that isn't needed here 
    end 
    def bt_left(dev) 
     dev.save 
     if t = Device.macs.index(dev.mac) 
      Device.all[t].add_int(dev.int, dev.t_0, dev.t_l) 
     else 
      Device.new(dev.mac, dev.int, dev.t_0, dev.t_l) 
     end 
     return false 
    end 
    def unbind 
     puts "disconnection" 
    end 
end 

EventMachine::run { 
    EventMachine::start_server 'localhost', 8081, BT_Server 
    puts t_0 = Time.new 
    puts 'listening...' 
} 

注:我有一個單獨的文件的模塊定義,與我的課,我需要到服務器腳本一起,如果有什麼差別。

回答

1

我測試了你的代碼,每次我通過telnet發送一些內容時,它輸出'hi'。從我的角度來看,代碼是正確的。 你確定發送腳本正在工作嗎?嘗試在端口8081上使用手動telnet。 問候。

+0

嗯。它似乎**未能發送數據。它從未給出任何錯誤或其他問題。 – 2011-03-10 17:44:10