Возможно ли для сервера 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 - это функция, которая определяет, что вы хотите сделать с ответом.

Я надеюсь, что это помогает.

Другие вопросы по тегам