XMPP聊天软件客户端开发(2)

步骤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对象的被废弃了,监听器也就没反应了。
后来用两台手机测试问题就没有了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值