我正在使用Smack API在Java中编写XMPP客户端。

我为每个用户注册了一个名单监听器,并且Smack API调用了......

public void entriesAdded(Collection arg0) {}

......每次注意到名册的添加。

如果数据库发生变化但是没有通过Smack API createEntry()方法,是否有人知道这个监听器是否会被启动?

基本上,我想将XMPP客户端绑定到一个网站。当您将某人添加到网站好友列表时,我希望该网站通知客户端。我希望只修改数据库,而不是设置套接字或使用PHP登录XMPP服务器。

如果没有客户端不断轮询数据库以进行更改,这是否有效或是否有另一种处理方法?

有帮助吗?

解决方案

更改数据库与Smack没有任何关系,因为它是一个客户端库。它没有数据库。服务器将使用和访问数据库,并且根据服务器的不同,可能存在允许服务器在更改数据库时发布消息的功能。我不知道是否有任何xmpp服务器实际上具有此功能。

您应该检查您正在使用的服务器的功能,并可能使用服务器本身的扩展来添加名单条目。直接更改数据库听起来不太合适,因为您很可能会使您的XMPP服务器和数据库不同步。

对于客户端轮询数据库,如果客户端能够直接访问数据库(如果XMPP服务器和可能是您的Web服务器正在使用它),这听起来不是一个好主意。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top