eventmachine服务器无法执行receive_data

时间:2011-03-01 02:33:29

标签: ruby eventmachine

我有一个eventmachine应用程序,其中一个脚本正在从文件中读取数据,逐行将数据发送到另一个脚本,并且“服务器”脚本正在对该数据进行操作。不幸的是,“服务器”脚本无法正常执行receive_data。我知道正在建立连接,因为它会影响post_init,我知道发件人脚本正在发送数据。以下是我的一些代码以及如何启动服务器。

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...'
}

注意:我将Module定义放在一个单独的文件中,连同我的类,我需要在服务器脚本中,如果这有任何区别。

1 个答案:

答案 0 :(得分:1)

我测试了你的代码,每当我通过telnet发送东西时它输出'hi'。 从我的角度来看,代码是正确的。 你确定发送脚本有效吗?尝试使用端口8081上的手动telnet。 问候。