public class Protocal
extends java.lang.Object
ProtocalType| 限定符和类型 | 字段和说明 |
|---|---|
protected boolean |
bridge
意义:是否来自跨服务器的消息,true表示是、否则不是。
|
protected java.lang.String |
dataContent
意义:协议数据内容。
|
protected java.lang.String |
fp
意义:用于QoS消息包的质量保证时作为消息的指纹特征码(理论上全局唯一)。
|
protected java.lang.String |
from
意义:消息发出方的id
说明:为“-1”表示未设定、为“0”表示来自Server。 |
protected boolean |
QoS
意义:true表示本包需要进行QoS质量保证,否则不需要.
|
protected int |
retryCount
本字段仅用于客户端QoS时:表示丢包重试次数
|
protected long |
sm
服务端发出或转发此消息时的时间(此字段仅在
时被服务端自动设置)。 |
protected java.lang.String |
to
意义:消息接收方的id(当用户退出时,此值可不设置)
说明:为“-1”表示未设定、为“0”表示发给Server。 |
protected int |
type
意义:协议类型。
|
protected int |
typeu
意义:应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型。
|
| 构造器和说明 |
|---|
Protocal(int type,
java.lang.String dataContent,
java.lang.String from,
java.lang.String to)
构造方法(QoS标记默认为false、typeu字段默认为-1)。
|
Protocal(int type,
java.lang.String dataContent,
java.lang.String from,
java.lang.String to,
boolean QoS,
java.lang.String fingerPrint)
构造方法(typeu字段默认为-1)。
|
Protocal(int type,
java.lang.String dataContent,
java.lang.String from,
java.lang.String to,
boolean QoS,
java.lang.String fingerPrint,
int typeu)
构造方法。
|
Protocal(int type,
java.lang.String dataContent,
java.lang.String from,
java.lang.String to,
int typeu)
构造方法(QoS标记默认为false)。
|
| 限定符和类型 | 方法和说明 |
|---|---|
java.lang.Object |
clone()
Protocal深度对象克隆方法实现。
|
static java.lang.String |
genFingerPrint()
返回QoS需要的消息包的指纹特征码.
|
static long |
genServerTimestamp()
返回服务端时间戳。
|
java.lang.String |
getDataContent()
返回协议数据内容。
|
java.lang.String |
getFp()
返回QoS质量保证时的指统特征码.
|
java.lang.String |
getFrom()
返回消息发出方的id。
|
int |
getRetryCount()
本字段仅用于QoS时:表示丢包重试次数。
|
long |
getSm() |
java.lang.String |
getTo()
返回消息接收方的id。
|
int |
getType()
返回协议类型.
|
int |
getTypeu()
返回应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型。
|
void |
increaseRetryCount()
本方法仅用于QoS时:选出包重试次数+1。
|
boolean |
isBridge()
是否来自跨服务器的消息,true表示是、否则不是。
|
boolean |
isQoS()
是否需QoS支持。
|
void |
setBridge(boolean bridge) |
void |
setDataContent(java.lang.String dataContent)
设置协议数据内容。
|
void |
setFrom(java.lang.String from)
设置消息发出方的id(当用户登陆时,此值可不设置)。
|
void |
setQoS(boolean qoS) |
void |
setSm(long sm) |
void |
setTo(java.lang.String to)
消息接收方的id(当用户退出时,此值可不设置)。
|
void |
setType(int type)
设置协议类型.
|
void |
setTypeu(int typeu)
设置应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型。
|
byte[] |
toBytes()
将本对象转换成JSON后再转换成byte数组.
|
java.lang.String |
toGsonString()
将本对象转换成JSON字符串.
|
protected boolean bridge
protected int type
typeu 字
段并配合dataContent一起使用。ProtocalTypeprotected java.lang.String dataContent
protected java.lang.String from
protected java.lang.String to
protected java.lang.String fp
protected boolean QoS
protected int typeu
protected transient int retryCount
protected long sm
ServerLauncher.serverTimestamp == true 时被服务端自动设置)。
此时间为形如“1624333553769”的Java时间戳,此值不设置则默认为-1。
本段的用途:本字段不参与MobileIMSDK核心框架的任何算法, 本字段的存与否与框架算法无任何关系,仅仅提供给应用层供开发者使用,开发者可以利用此字段来 构造消息的排序逻辑等,别无他用。
public Protocal(int type,
java.lang.String dataContent,
java.lang.String from,
java.lang.String to)
type - 协议类型dataContent - 协议数据内容from - 消息发出方的id(当用户登陆时,此值可不设置)to - 消息接收方的id(当用户退出时,此值可不设备)Protocal(int, String, String, String, int)public Protocal(int type,
java.lang.String dataContent,
java.lang.String from,
java.lang.String to,
int typeu)
type - 协议类型dataContent - 协议数据内容from - 消息发出方的id(当用户登陆时,此值可不设置)to - 消息接收方的id(当用户退出时,此值可不设备)typeu - 应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型,不需要设置时请填-1即可Protocal(int, String, String, String, boolean, String, int)public Protocal(int type,
java.lang.String dataContent,
java.lang.String from,
java.lang.String to,
boolean QoS,
java.lang.String fingerPrint)
type - 协议类型dataContent - 协议数据内容from - 消息发出方的id(当用户登陆时,此值可不设置)to - 消息接收方的id(当用户退出时,此值可不设置)QoS - 是否需要QoS支持,true表示是,否则不需要fingerPrint - 协议包的指纹特征码,当 QoS字段=true时且本字段为null时方法中
将自动生成指纹码否则使用本参数指定的指纹码Protocal(int, String, String, String, boolean, String, int)public Protocal(int type,
java.lang.String dataContent,
java.lang.String from,
java.lang.String to,
boolean QoS,
java.lang.String fingerPrint,
int typeu)
type - 协议类型dataContent - 协议数据内容from - 消息发出方的id(当用户登陆时,此值可不设置)to - 消息接收方的id(当用户退出时,此值可不设置)QoS - 是否需要QoS支持,true表示是,否则不需要fingerPrint - 协议包的指纹特征码,当 QoS字段=true时且本字段为null时方法中
将自动生成指纹码否则使用本参数指定的指纹码typeu - 应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型,不需要设置时请填-1即可public int getType()
ProtocalTypepublic void setType(int type)
type - 协议类型ProtocalTypepublic java.lang.String getDataContent()
public void setDataContent(java.lang.String dataContent)
dataContent - public java.lang.String getFrom()
public void setFrom(java.lang.String from)
from - public java.lang.String getTo()
public void setTo(java.lang.String to)
to - public java.lang.String getFp()
genFingerPrint()public int getRetryCount()
本值是transient类型,对象序列化时将会忽略此字段。
public void increaseRetryCount()
本方法理论上由MobileIMSDK内部调用,应用层无需额外调用。
public boolean isQoS()
public void setQoS(boolean qoS)
public boolean isBridge()
public void setBridge(boolean bridge)
public int getTypeu()
注意:此值为-1时表示未定义。MobileIMSDK框架中,本字段为保留字段, 不参与框架的核心算法,专留用应用层自行定义和使用。
默认:-1。
public void setTypeu(int typeu)
注意:此值为-1时表示未定义。MobileIMSDK框架中,本字段为保留字段, 不参与框架的核心算法,专留用应用层自行定义和使用。
默认:-1。
typeu - 任意应用层决定的整数,如不使用请填-1public long getSm()
public void setSm(long sm)
public java.lang.String toGsonString()
public byte[] toBytes()
toGsonString()public java.lang.Object clone()
clone 在类中 java.lang.Objectpublic static long genServerTimestamp()
public static java.lang.String genFingerPrint()
重要说明:使用系统时间戳作为指纹码,则意味着只在Protocal生成的环境中可能唯一. 它存在重复的可能性有2种:
目前使用的UUID能保证全局唯一,但它有36位长(加上分隔符32+4),在流量敏 感的场景下,建议可考虑适当优化此生成算法。
UUID.randomUUID().toString()