XMPP协议的学习总结(1)

XMPP,我所理解,就是基于XML,实现终端到终端的结构化的信息传输协议.,它是一个开源的即时通信协议。它主要包括三部分:客户端、服务器和网关。它们三个任意两者之间都可以实现双向通信。这里,网关主要实现的是不同的服务器之间通信的通道。客户端与服务器建立连接时端口默认使用5222端口,连接过程如下:

ConnectionConfiguration configuration;

configuration = new ConnectionConfiguration(server, 5222);

//这里server就是配置OpenFire服务器时的Host Name:

 Connection connection;

     connection = new XMPPConnection(configuration);

connection.connect();

在消息的传输通过TLS(即安全传输协议),保证了数据传输的保密性和安全性,细节方面,应该是对这个xml信息进行加/解密操作吧,我没过多研究了。

P1与P2之间的通信过程是这样的:P1发送一串xml信息(这串信息<message/>信息,里面包含<id/><to/><from/><type><body/>等几个标签)给服务器,服务器接收到这条消息后会,首先会根据JID判断P1、P2是否在同一服务器中,若是则直接发送给已经在线的P2;若不在同一服务器中,会通过网关,将这条消息发送给P2所属服务器,并这条消息发送给P2(对了,<message/>中会包含to标签是P2的邮件地址)。当然,如果当前P2不在线,服务器会保存这些消息到数据库中,待它再次上线后发送过去。

客户端发送即时聊天消息:

Chat chat = cm.createChat(userJIDnull);  //注册时的邮件地址

chat.sendMessage(strSend);//userJID发送一串消息:strSend

客户端设置监听其他用户发来消息的处理过程:

ChatManager cm = connection.getChatManager();//对了,要登录一下哦!

然后实例化一个抽象接口ChatManagerListener并实现chatCreated方法来进行监听:

    cm.addChatListener(new ChatManagerListener() {

public void chatCreated(Chat chat, boolean create) {

chat.addMessageListener(new MessageListener() {

public void processMessage(Chat chat, Message msg) {

System.out.println("新消息:");

System.out.println(chat.getParticipant() + ":"

+ msg.getBody());

try {

chat.sendMessage("是啊,我是Joim,我收到了");

catch (XMPPException e) {

e.printStackTrace();

}

}

});

     }});

OK,一个简单的即时通信测试程序就 完成了,可以在Spark上登录另个用户,进行即时通信测试。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值