答案 0 :(得分:1)
在ejabberd域中,必须明确配置。这是因为在启动域时,将根据模块配置启动许多支持进程,并将条目插入到内部ejabberd路由表中。 mod_muc就是一个很好的例子,它开始一个处理多用户聊天的过程,并在与“mysite.com”域合作时将路由表中的进程注册为“conference.mysite.com”。
放{hosts,[“* .mysite.com”]}。在您的ejabberd配置中将无法正常工作,因为ejabberd无法确切知道您确实需要在路由表中启动和设置哪些域。
替代方案是在运行时配置您的其他域。这在ejabberd 2.x上不可用,但是是ejabberd 3中的一项功能。运行时配置可以通过调用ejabberd_hosts模块中的函数来完成。请注意,如果您创建主机而未传递配置字符串,则主机将创建为永久主机(非动态),就像您在{hosts,[]}中列出的那样。在配置文件中。
这有两个潜在的缺点。 1.当函数存在时,您仍然需要一些向聊天系统发送信号的方法,您希望创建一个额外的域。这可能需要一个自定义模块。 2. ejabberd 3仍处于alpha状态。虽然它运行得很好但我仍然发现需要不时修补的错误。
我维护了一个包含我的错误修复的ejabberd3的小分支(大部分与实时配置有关)。它可以在https://github.com/chatmongers/ejabberd/tree/prod的github上找到。