eventmachine 服务器无法执行 receive_data

发布于 2024-10-20 05:15:12 字数 969 浏览 1 评论 0原文

我有一个 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...'
}

注意:我将模块定义以及我的类放在一个单独的文件中,我需要将其添加到服务器脚本中(如果这有什么区别的话)。

I have an eventmachine app where one script is reading from a file, sending data to another script line by line, and the "server" script is acting upon that data. Unfortunately, the "server" script fails to execute receive_data as it should. I know that a connection is being made because it eecutes post_init, and I know the sender script is sending data. Here is some of my code along with how I start the server.

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

Note: I have the Module definition in a separate file, along with my classes, which I require into the server script, if that makes any difference.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

君勿笑 2024-10-27 05:15:12

我测试了你的代码,每次我通过 telnet 发送内容时它都会输出“hi”。
从我的角度来看,代码是正确的。
您确定发送脚本有效吗?尝试在端口 8081 上手动 telnet。
问候。

i tested your code and it outputs 'hi' every time i send something via telnet.
from my point of view, the code is correct.
are you sure the sending script is working? try with a manual telnet on port 8081.
regards.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文