使用Tigase和res_xmpp以星号显示Pubsub

使用Tigase和res_xmpp以星号显示Pubsub,xmpp,asterisk,publish-subscribe,tigase,Xmpp,Asterisk,Publish Subscribe,Tigase,我安装并配置了Tigase服务器,以便在多个星号服务器之间分发设备状态。服务器工作正常。其配置文件如下: --cluster-mode = true config-type = --gen-config-def --debug = server,xmpp,net --user-db = mysql --admins = admin@localhost --user-db-uri = jdbc:mysql://localhost/tigasedb?user=root&password=no

我安装并配置了Tigase服务器,以便在多个星号服务器之间分发设备状态。服务器工作正常。其配置文件如下:

--cluster-mode = true
config-type = --gen-config-def
--debug = server,xmpp,net
--user-db = mysql
--admins = admin@localhost
--user-db-uri = jdbc:mysql://localhost/tigasedb?user=root&password=no
--virt-hosts = localhost
--comp-name-3 = message-archive
--comp-class-3 = tigase.archive.MessageArchiveComponent
--comp-class-2 = tigase.socks5.Socks5ProxyComponent
--comp-name-2 = proxy
--comp-class-1 = tigase.muc.MUCComponent
--comp-name-1 = muc
--sm-plugins = +message-archive-xep-0136
#--ssl-container-class=tigase.extras.io.PEMSSLContextContainer
#--ssl-container-class=tigase.io.SSLContextContainer
--comp-name-1=pubsub
--comp-class-1=tigase.pubsub.PubSubComponent
我在两个不同的系统上安装了两个星号服务器。我还编译了这两个版本的res_xmpp,并使用以下配置文件对其进行了配置:

[general]
debug=yes
autoregister=yes
collection_nodes=yes
pubsub_autocreate=yes

[tigase]
type=client
serverhost=192.168.20.105
username=server1@localhost/voip1
pubsub_node=pubsub.192.168.20.105
secret=123456
priority=25
port=5222
usetls=yes
usesasl=yes
status=available
statusmessage="I am available"
timeout=5
buddy=server2@localhost/voip2
distribute_events=yes
我的一台服务器的用户名是server1@localhost/另一个是server2@localhost/voip2。现在xmpp模块工作正常。但pubsub事件并没有正确分布。如您所见,我使用IP地址来区分我的Tigase服务器。如果我在res_xmpp模块的pubsub_节点选项中使用相同的IP地址,服务器将返回“未实现功能”错误,错误代码为501;正因为如此,我使用了pubsub.192.168.20.105,并在两台服务器的/etc/hosts中设置了此选项。没有错误消息,但我也不会得到事件!!!
如何解决此问题?

问题可能在于Tigase配置。你有:

--comp-class-1 = tigase.muc.MUCComponent
--comp-name-1 = muc
--comp-name-1=pubsub
--comp-class-1=tigase.pubsub.PubSubComponent
正如您所看到的,您为MUC和PubSub组件分配了相同的编号。考虑到其他组件的其他配置,PubSub的正确配置应为:

--comp-name-4=pubsub
--comp-class-4=tigase.pubsub.PubSubComponent

现在我的配置看起来像这样,但它给了我功能未实现的错误

我的Tigase服务器和星号也有同样的问题;您的问题是您设置了:

pubsub_autocreate=yes

在xmpp.conf中进行配置。此选项会自动创建多个节点;如果查看Tigase数据库中的tig_节点,您将看到已经创建了许多节点。您必须对此选项进行注释。之后,必须重新部署Tigase SQL模式,否则必须删除所有这些节点;那么一切都会好起来的。通过查看Asterisk CLI中res_xmpp模块的调试输出,您将看到res_xmpp将尝试一次订阅多个节点,这会导致混淆,因为存在许多同名节点;服务器将返回409和501个错误。

我已经这样做了,但这并不能解决我遇到的问题:功能还不受支持
pubsub_autocreate=yes