openfire如何查询用户是否注册和在线?
步骤一: 用户输入邮箱地址,客户端进行邮箱格式验证,并把邮箱发往服务器验证是否已注册。 通过查找smack的API文档,我没有发现有专门的方法用于用户名唯一性的验证,倒是在注册的时候,如果用户名已存在,服务器会返回一个“conflict”的异常,通过这个异常可以判断用户名的唯一性。但向服务器提交注册请求得进行到第三步的时候才会进行,这时候用户已输入了邮箱验证码,昵称,密码等信息,如果这时候再告诉用户用户名已存在,那么用户之前的输入就全作废了,这样的用户体验无疑很不好,所以我们得在用户输入邮箱地址的时候即时验证用户名的唯一性,并把结果反馈给用户。 通过不断地查找资料,最终发现org.jivesoftware.smackx.search.UserSearchManager这个类可以提供用户名,昵称,邮箱等信息的查找。但使用这个类有个前提:必须得通过用户验证。也就是说得登录之后才能使用这个类,否则服务器会返回“not-anthorized”的异常。由于我们是用于用户注册的过程中,不可能已经登录。于是又通过不断地查找smackAPI文档,最终发现了org.jivesoftware.smack.XMPPConnection.loginAnonymously方法,看方法名我们可以知道该方法是用来进行匿名登录的,使用此方法的前提是服务器要开启对匿名登录的支持。 用loginAnonymously这个方法,然后通过使用UserSearchManager类确实能够查找服务器中的用户名,但是用邮箱作用户名,则会查找不到,这是因为在XMPP协议中,用户名都是采用