Prosody服务器有几个模块,允许它响应HTTP请求。
例如,mod_http_rest允许我在端口 5280 上发出 POST 请求,并将 XMPP 节作为有效负载,Prosody 服务器通过发送该节来响应。
但是,我正在寻找一个可以做相反事情的模块:即获取通过常规方式接收的 XMPP 消息,并以该消息作为有效负载向指定服务器发出 HTTP POST 请求。
我似乎找不到任何可以做到这一点的模块。有这样的事情吗?
如果没有,Prosody API 中是否有任何可用的功能可以编写这样的模块?
或者,是否有充分的理由说明这可能是一个坏主意?
要回答您的问题,是的,Prosody 可以向外部服务发出 HTTP 请求。
您描述的模块(采用XMPP并通过HTTP转发(不存在,但几乎没有理由不存在。所以我刚刚发布了一个提供此功能的模块:https://modules.prosody.im/mod_component_http.html
是否已经有一个模块,但有一种方法可以自己实现它。几个月前,我出于特定目的制作了自己的模块,并使用了net.http
正如文档所说:
是一个用于向远程服务器发出非阻塞 HTTP 请求的 API。
因此,您应该从此处检查文档,以便可以像以下方式使用它:
local req = require "net.http"
req.request( URL, opts, callBack )
其中 opts 是 json 中的选项,而 callBack 是一个函数,用于定义您要对响应执行的操作。
我希望它有所帮助。