IM(instant Message)即时通信:比较有名的有QQ、微信、陌陌等。
1.常用的协议有TCP/UDP(底层),HTTP(上层)
2.TCP与UDP的异同
异同点 | TCP | UDP |
大小 | 可以大文件 | 64k一下 |
连接方式 | 面向连接(三次握手) | 不面向连接 |
效率 | 效率低 | 效率高 |
3.常见形式
在线直传 | 不经过服务器,peer to peer p2p |
在线代理 | 消息经过服务器,由服务器转发 |
离线代理 | 消息经过服务器,对方不在线,暂保服务器,在线再转发 |
离线扩展 | 其它形式转发 sms邮件 |
4.IM的原理
步骤:
1.创建与服务器端的消息通道
2.登录账号与密码
3.获得所有联系人(好友)
4.服务器根据目标账号to发送消息。
5.侧重点
开发的重点 | 1.IM接口文档 2.开发sdk |
Socket 套接字 | 客户端程序 插头 |
ServerSocket | 服务端程序 插座 |
电流/消息通讯 |
|
核心内容
1.消息内容与IM服务器接口文档
接口文档:规定了消息内容的字段和格式(xml和json)
消息对象:封装的消息对象,消息内容+附加字段
2.消息格式(xml/json)
Xml与json都是格式良好的字符串。
xml | json |
Xstream | gson |
完成java对象与xml的互转 | 完成java对象与json的互转 |
Xstream 1.fromXml :xml转java对象 2.toXml :java对象转xml | gson 1.fromGson:json转java对象 2.toJson :java对象转json |
xml扩展性好 | json扩展性差 |
<name>消息</name>流量没优势 | {"name":“消息”}流量有优势 |