我在我的电脑上安装了openfire服务器(名称:duong2179-pc,静态公共IP:20x.25x.xxx.xxx)。我还安装了Spark并注册了2个帐户:test1和test2。我使用Smack开发了一个小型桌面Java应用程序。
我在我的应用程序上使用Spark和test2上的test1,两个帐户都采用以下格式:test@20x.25x.xxx.xxx,然后我遇到了麻烦:test1(在Spark上)可以向test2发送消息(Java应用程序) )但test2无法发回。以下是问题的根源:
sendMessage(message, "test1@20x.25x.xxx.xxx);
我试着改变一点,比如
sendMessage(message, "test1@duong2179-pc");
然后它运作良好。
那么这里的不同点是什么?
请注意,当我在Spark中使用时,我使用的服务器为20x.25x.xxx.xxx而不是duong2179-pc
答案 0 :(得分:1)
发送xmpp消息时,接收方的JID(Jabber ID)由三部分组成, 用户信息(test1),xmpp域(duong2179-pc)和可选资源。
user@xmpp.domain/resource
此域名,IS NOT,主机地址,它是您服务器上配置的xmpp域。
安装openfire时,默认域就是安装它的机器的主机名。因此,xmpp域和主机名恰好相同,这就是为什么第二种情况有效,但不是第一种情况。
如果您在服务器上打开管理控制台并将域名更改为其他内容,则两个示例行都不起作用。