步骤3:开始follow文档来实践基础功能。(文档在压缩包里的releasedocs文件夹内,有中文版的,大家可以在网上找找,但是注意版本问题)
·建立连接:
ConnectionConfiguration是连接的配置类,配置连接的基本信息,如服务器名字、地址、端口、安全模式等。新建连接时,将Configuration作为Connection的构造参数传入就可以创建连接实例。
然后执行connect()函数即可与服务器建立连接。
Configuration参考代码:
private ConnectionManager(){ XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .setServiceName("Server") .setHost("192.168.0.101") .setPort(5222) .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) .build(); xmppConnection = new XMPPTCPConnection(config); SASLMechanism sm = new SASLPlainMechanism(); SASLAuthentication.registerSASLMechanism(sm.instanceForAuthentication(xmppConnection)); }
连接代码十分简单:
xmppConnection.connect();
!注意1!
ConnectionConfiguration连接配置默认是使用安全模式,SSL/TLS。由于证书问题,所以需要将安全模式设为disabled。
!注意2!
当连接安全模式为disabled时,需要使用SASL与服务器建立连接。处理方法:
1、新建SASLMechanism类。
2、在SASLAuthentication中注册SASLMechanism。
3、另外,Openfire服务器需要支持你所指定的SASLMechanism类型。因此要对Openfire进行配置。到Openfire服务器存储位置的conf文件夹下,打开openfire.xml,在最后一个tag结束前,加入配置。
如:<sasl>PLAIN<sasl>(加入SASL的PLAIN mechanism)
·登录:
登录很简单,使用login函数就好,注意一下JID就好。
xmppConnection.login(account,password);
·单人聊天:
这里有2个重要的类,Chat 和 ChatManager。
Chat是一个会话,相当于一个聊天,通过ChatManager生成。
ChatManager则是Chat的管理类,ChatManager通过getInstanceFor函数可以获得。
还有2个接口,
ChatMessageListener:用于监听对方传回的信息。
ChatManagerListener:用于监听Chat的建立。
了解这4个类时,应该看Smack源码看看他们使用的共同与不同之处。
创建聊天Chat分为2类,一种是自己创建,另一种是他人创建。ChatManager提供2种方式去创建。
第一种是ChatManager.createChat();
第二种是通过建立监听器来创建ChatManager.addChatListener;
!注意!
笔者当时使用Android通过第一种方式建立连接时出现了不能监听到对方传回来的信息,而通过第二种方式则能监听到。通过2天的折腾,发现问题是出在笔者是用Android客户端与Spark的PC客户端进行测试。Spark客户端应该是重新建立了一个Chat导致Android的Chat对象的被废弃了,监听器也就没反应了。
后来用两台手机测试问题就没有了。