我在导轨上设置了新服务器,我需要继续监听端口以接收消息并将它们存储在数据库中。问题在于服务器必须一直在侦听端口,并且我不知道我可以在红宝石内部的哪里写嗅探器来做到这一点而不会受到干扰。
我使用express和一个用于数据报的库在Node中创建了这个确切的项目,我要做的就是在始终运行的主文件上创建嗅探器,但是我不知道如何在rails上执行此操作。
这是在红宝石中发现的嗅探器
require 'socket.so'
ul = UDPSocket.new
ul.bind("localhost", 4001)
p ul.recvfrom(10)
答案 0 :(得分:0)
首先,通过查看您的请求,我很好奇您想要实现的目标。 如另一篇文章所建议:Does Rails support a neat way of listening to a UDP socket? Rails是一个Web应用程序开发框架,而不是服务器守护程序框架。因此,考虑在不同的进程(可以单独启动)上启动UDP侦听器可能是一个好主意。
根据要求,如果您愿意与应用程序(https://edgeguides.rubyonrails.org/action_cable_overview.html提供实时双向通信,则带有ActionCable的WebSocket可能是不错的选择。
如果您真的想在rails应用程序中剥离UDP侦听器,则仍然可以在rails初始化过程中挂接套接字侦听器,并在不同的线程/进程中运行它。但是,我觉得这很奇怪。
答案 1 :(得分:0)
Rails确实不是为此目的而设计的。但是,您可以从问题中的脚本开始,并使用https://github.com/thuehlinger/daemons
使其成为守护程序。然后通过HTTP / API与您的Rails应用对话,或者直接与您的数据库对话。
答案 2 :(得分:0)
方法是为嗅探器创建活动作业,并在config.ru文件中调用它以初始化Rails服务器