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一起使用。ProtocalType
protected 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()
ProtocalType
public void setType(int type)
type
- 协议类型ProtocalType
public 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.Object
public static long genServerTimestamp()
public static java.lang.String genFingerPrint()
重要说明:使用系统时间戳作为指纹码,则意味着只在Protocal生成的环境中可能唯一. 它存在重复的可能性有2种:
目前使用的UUID能保证全局唯一,但它有36位长(加上分隔符32+4),在流量敏 感的场景下,建议可考虑适当优化此生成算法。
UUID.randomUUID().toString()