Возможно ли для сервера Prosody сделать HTTP-запрос к внешнему API
Сервер Prosody имеет несколько модулей, которые позволяют ему отвечать на HTTP-запросы.
Например, mod_http_rest позволяет мне сделать запрос POST на порт 5280 с разделом XMPP в качестве полезной нагрузки, и сервер Prosody отвечает, отправляя этот раздел в своем пути.
Тем не менее, я ищу модуль, который сделал бы обратное: то есть принял бы сообщение XMPP, полученное обычными средствами, и сделал бы запрос HTTP POST на указанный сервер с этим сообщением в качестве полезной нагрузки.
Я не могу найти какой-либо модуль, который будет делать это. Что-то подобное существует?
Если нет, есть ли какая-либо функциональность, доступная в API Prosody, которая позволила бы написать такой модуль?
В качестве альтернативы, есть веские причины, почему это может быть плохой идеей?
2 ответа
Чтобы ответить на ваш вопрос, да, Prosody может отправлять HTTP-запросы внешним службам.
Модуль, который вы описываете (возьмите XMPP и перешлите его по HTTP), не существует, но для этого нет особых оснований этого не делать. Поэтому я только что опубликовал модуль, который предоставляет эту функцию: https://modules.prosody.im/mod_component_http.html
Я не знаю, есть ли уже модуль для этого, но есть способ достичь этого самостоятельно. Я сделал свой собственный модуль несколько месяцев назад для определенных целей, и я использовал net.http
которые, как говорят в Документах:
API для создания неблокирующих HTTP-запросов к удаленным серверам.
Итак, вы должны проверить Документы отсюда, чтобы вы могли использовать его следующим образом:
local req = require "net.http"
req.request( URL, opts, callBack )
Где опции - это ваши параметры в json, а callBack - это функция, которая определяет, что вы хотите сделать с ответом.
Я надеюсь, что это помогает.