2009-04-30 65 views
1

我正在使用Smack API在Java中编写XMPP客户端。XMPP Smack API RosterListener +数据库更改

我注册了一个花名册监听器为每个用户,并拍击API调用...

public void entriesAdded(Collection arg0) {} 

...每次注意到名册添加时间。

有谁知道如果数据库更改但不通过Smack API createEntry()方法,此监听器是否会启动?

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

这项工作还是有另一种方式来处理这种情况,而客户端不断地轮询数据库以进行更改?

回答

0

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

您应该检查您正在使用的服务器的功能,并可能使用服务器本身的扩展来添加名单条目。直接更改数据库听起来并不像要走的路,因为您最有可能让XMPP服务器和数据库不同步。

至于客户端轮询数据库,如果客户端能够直接访问数据库(如果它正在被XMPP服务器和潜在的Web服务器使用)似乎不是一个好主意。