没有合适的资源?快使用搜索试试~ 我知道了~
Smack类库最好的学习资料
需积分: 10 3 下载量 34 浏览量
2014-07-31
11:20:53
上传
评论
收藏 53KB DOCX 举报
温馨提示
试读
16页
Smack类库最好的学习资料Smack类库最好的学习资料
资源推荐
资源详情
资源评论
1.登陆 IM
首先激活调试模式
1.1 建立连接
首先,在启动 时,客户端通过 与服务器建立连接。建
立连接的方式有两种:
直接连到服务器
Connection conn = new XMPPConnection("localhost");//创建连接
//其中“localhost”是服务器地址,由于我用的是本机,所以是“localhost”。
conn.connect();//接通连接
2.根据配置连接
ConnectionConfiguration config = ConnectionConfiguration();
config.setServiceName("localhost");//还可以设置很多其他属性,如隐身登
陆
Connection conn1 = new XMPPConnection(config);
conn1.connect();
1.2 用户登陆
建立连接之后就是用户登陆了,openfire 是支持多终端登陆的,下面的 resource
就是指的是终端名称,如 Smack、Spark 等。登陆的方法有两个
login(String$username, String$password)和
login(String$username, String$password, String$resource)
具体例子如下,livsun 与 livsun1 是两个用户,密码都是 111
conn.login("livsun", "111","Smack");
resource 也可以缺省不设置
conn1.login("livsun1", "111");
本文后面默认 livsun 与 livsun1 已 经 登 陆 , 且 与 服 务 器 的 连 接 分 别 conn 和
conn1.
1.3 断开连接
断开连接只需调用 !"#方法,如 !"#
2.单人聊天
2.1 发起会话请求
作为一款 $ 软件的通信协议,首要功能就是聊天。聊天包含两种方式,主动向其他人
发起会话;也可以接受别人的会话请求。下面是主动对别人发起会话的实现:
%%"!$&!'!#
其 中 $ 是 本 次 对 话 请 求 的 接 收 方 的 标 志 , 如 $ 是 '!()*++,-./0
12,'!()*++,-./0 是对话请求的接收方,12 说明用户是在哪个终端登陆的,
可以缺省不写。
2.1.1 消息监听
当想一个用户发起会话请求,对方接受请求并创建会话后,对方可能发送消息回来,
这时需要对接受的消息进行处理。这里要用到 !。
下例将创建一个会话并对收到的消息进行输出:
Chat chat =
conn.getChatManager().createChat("livsun1@z00189374/Smack", new
MessageListener(){
public void processMessage(Chat chat0, Message message)
{
System.out.println("来自 livsun1 的消息,内容
为"+message.getBody());
}
});
红色 chat 是这次创建的对话对象,它在 livsun 跟 livsun1 之间建立一个会话连接;同
事处理来自 livsun1 的消息。如果 livsun 想要发消息,需要用 chat 来调用 sendMessage
方法。
具体可见下例:
chat.sendMessage("Hello,I’m livsun");
2.1.2 会话请求监听
通过上面例子可以知道 livsun 怎样发送了一个消息给 livusn1。但是 livsun1 需要知
道何时 livsun 发了一个消息给自己,同时还要对这个消息进行处理。Smack 提供了会话请求
监听接口 ChatManagerListener,每个用户通过实现该接口,来监听没一个会话的创建请
求。这里再以 livsun1 为例来展示一下:
chat.getChatManager. addChatListener(ChatManagerListener$listener)
ChatManagerListener 只有一个方法 chatCreated(Chat$chat,
boolean$createdLocally),它用来处理当 chat 创建时的具体操作。
具体请看下面例子:
conn1.getChatManager().addChatListener(
new ChatManagerListener(){
public void chatCreated(Chat chat, boolean createdLocal)
{
//自己创建是指自己调用 createChat 方法,它也会触发这个 listener
//一半在创建对话时就会制定 MessageListener,这样判断主要是为了避免重复定义//
MessageLister
if(createdLocal)
{
System.out.println("这个 chat 是自己创建的");
}
//创建与 livsun 的对话,这里面可以通过 message 来获取发送聊天请求的人信息
else
{
System.out.println("别人想跟我聊天");
chat.addMessageListener(new MessageListener(){
public void processMessage(Chat chat, Message
message)
{
System.out.println(message.getFrom+"想跟我聊
天)
chat.sendMessage("你好");
}
});
}
}
});
剩余15页未读,继续阅读
资源评论
shumaojun52
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AIS2024 valid
- 最入门的爬虫代码 python.docx
- 爬虫零基础入门-爬取天气预报.pdf
- 最通俗易懂的 MongoDB 非结构化文档存储数据库教程.zip
- 以mongodb为数据库的订单物流小项目.zip
- 腾讯云-mongodb数据库, 项目部署.zip
- 腾讯 APIJSON 的 MongoDB 数据库插件.zip
- 理解非关系型数据库和关系型数据库的区别.zip
- 操作简单的Mongodb网页web管理工具,基于Spring Boot2.0支持mongodb集群.zip
- tms-mongodb-web,提供访问mongodb数据的REST API和可灵活扩展的mongodb web 客户端.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功