Как постоянно прослушивать сокеты UDP на сервере rails - PullRequest
0 голосов
/ 14 апреля 2019

Я настраиваю новый сервер на рельсах, где мне нужно продолжать слушать порт, чтобы получать сообщения и сохранять их в своей базе данных.Проблема в том, что сервер все время слушает порт, и я не знаю, где я могу написать сниффер внутри ruby, чтобы сделать это без прерываний.

Я сделал этот точный проект в Node, используя Express ибиблиотека для дейтаграмм, все, что мне нужно сделать, это создать сниффер в главном файле, который всегда работал, но я не знаю, как это сделать на рельсах.

Этот сниффер найден в ruby ​​

require 'socket.so'
ul = UDPSocket.new
ul.bind("localhost", 4001)
p ul.recvfrom(10)

Ответы [ 3 ]

0 голосов
/ 15 апреля 2019

Rails действительно не предназначен для этого. Однако вы можете начать со скрипта в вашем вопросе и сделать его демоном с https://github.com/thuehlinger/daemons

Затем поговорите со своим приложением Rails через HTTP / API или, альтернативно, напрямую с вашей базой данных.

0 голосов
/ 16 апреля 2019

Способ сделать это - создать активное задание для Sniffer и вызвать его внутри файла config.ru для инициализации сервера rails

0 голосов
/ 15 апреля 2019

Сначала, глядя на ваш запрос, мне очень интересно, чего вы хотите достичь.Как предлагается в этом другом посте: Поддерживает ли Rails аккуратный способ прослушивания сокета UDP? Rails - это среда разработки веб-приложений, а не серверная платформа демона.Поэтому, возможно, стоит подумать о запуске прослушивателя UDP в другом процессе (который можно запустить отдельно).

В зависимости от требований, WebSockets с ActionCable может быть полезен, если вы хотите обеспечить двустороннюю связь в реальном времени с вашим приложением (https://edgeguides.rubyonrails.org/action_cable_overview.html).

Есливы действительно хотите просто раскрутить прослушиватель UDP в вашем приложении rails, вы все равно можете подключить прослушиватель сокетов в процессе инициализации rails и запустить его в отдельном потоке / процессе. Но я нахожу это довольно странным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...