Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang 带有ejabberd的http钩子/回调_Erlang_Ejabberd - Fatal编程技术网

Erlang 带有ejabberd的http钩子/回调

Erlang 带有ejabberd的http钩子/回调,erlang,ejabberd,Erlang,Ejabberd,从ejabberd的网页上,我了解到可以通过使用hook/events等编写模块来扩展ejabberd的功能。然而,所有的示例都在erlang中,我并不知道如何使用它。当然,我可以去学,但我的问题是我是否可以完全避免它。即,是否有以下可能: 我使用node.js/golang/python等其他工具编写了一些REST服务器,然后以某种方式将其挂接到ejabberd的事件系统中 最好的办法是什么?任何指向代码示例/教程的链接都非常棒 非常感谢。这取决于你想写什么样的功能。对于某些模块,您可能需要使

从ejabberd的网页上,我了解到可以通过使用hook/events等编写模块来扩展ejabberd的功能。然而,所有的示例都在erlang中,我并不知道如何使用它。当然,我可以去学,但我的问题是我是否可以完全避免它。即,是否有以下可能:

我使用node.js/golang/python等其他工具编写了一些REST服务器,然后以某种方式将其挂接到ejabberd的事件系统中

最好的办法是什么?任何指向代码示例/教程的链接都非常棒


非常感谢。

这取决于你想写什么样的功能。对于某些模块,您可能需要使用内部API。请注意,您可以使用Erlang或Elixir,这要容易得多。例如,下面是如何编写Elixir模块:

另一种方法是使用Jabber XMPP组件协议。它更为有限,但允许您用任何语言编写XMPP组件。以下是ejabberd支持的Jabber组件协议的说明:

这有点像在问你是否可以在不被迫使用C的情况下破解核心Linux内核模块。此外,你提到的每种语言在编写事件处理程序和网络代码方面都比ejabberd已经用过的语言糟糕得多——这很好地解释了为什么它一开始是用Erlang编写的。如果Erlang很难,我可能会看到一点,但在用几种语言编写网络服务之后,我有信心说,学习Erlang比编写一个用大多数其他语言都能完成非琐碎工作的可靠网络服务要容易得多。我知道Erlang很棒,但选择其他语言还有其他原因,其中一个原因是现成组件的可用性,这节省了大量的开发时间。假设我想写一个机器人。你喜欢这个工作吗?在erlang中编写一个基本上调用远程REST服务器的最小钩子。然后,服务器使用一些客户端api与ejabberd群集进行对话。如果您希望运行一个尚不存在的聊天服务,并向其附加一个尚不存在的bot,并且如果可能,您不希望使用Erlang,那么我建议使用一个不基于ejabberd或Erlang的聊天服务器。如果您出于某种原因需要使用ejabberd或MongooseIM或某些XMPP服务,并且希望附加一个bot,我建议您使用OtherLang中的XMPP客户端库,通过XMPP连接并对事件做出反应,这意味着您可能可以通过重写仅IRC的位来修补现有的IRC bot。如果您想做更高级的事情,就像在XMPP上运行MUD并从根本上改变服务事件的工作方式一样,那么所涉及的工作将大大超过您最终使用的任何LIB和协议的学习曲线,而这些LIB和协议的学习曲线将大大超过它们以何种语言实现的学习曲线。