public class LocalSendHelper
extends java.lang.Object
注意:如果未开通与Web版的互通(参见: ServerLauncher.bridgeEnabled
)
,则服务端消息发送建议使用本类,否则请使用 GlobalSendHelper
。
ServerLauncher.bridgeEnabled
构造器和说明 |
---|
LocalSendHelper() |
限定符和类型 | 方法和说明 |
---|---|
static void |
replyDataForUnlogined(io.netty.channel.Channel session,
Protocal p,
MBObserver resultObserver)
当服务端检测到用户尚未登陆(或登陆会话已失效时)由服务端回复给
客户端的消息。
|
static void |
replyRecievedBack(io.netty.channel.Channel session,
Protocal pFromClient,
MBObserver resultObserver)
服务端回复应答包(给客户端发送方)。
|
static void |
sendData(io.netty.channel.Channel session,
Protocal p,
MBObserver resultObserver)
向目标发送一条数据。
|
static void |
sendData(Protocal p,
MBObserver resultObserver)
向目标发送一条数据。
|
static void |
sendData(java.lang.String to_user_id,
java.lang.String dataContent,
boolean QoS,
int typeu,
MBObserver resultObserver)
向目标发送一条数据(默认from_user_id="0")。
|
static void |
sendData(java.lang.String to_user_id,
java.lang.String dataContent,
boolean QoS,
java.lang.String fingerPrint,
int typeu,
MBObserver resultObserver)
向目标发送一条数据(默认from_user_id="0")。
|
static void |
sendData(java.lang.String to_user_id,
java.lang.String dataContent,
boolean QoS,
java.lang.String fingerPrint,
MBObserver resultObserver)
向目标发送一条数据(typeu=-1、from_user_id="0")。
|
static void |
sendData(java.lang.String to_user_id,
java.lang.String dataContent,
int typeu,
MBObserver resultObserver)
向目标发送一条数据(默认QoS=true、from_user_id="0")。
|
static void |
sendData(java.lang.String to_user_id,
java.lang.String dataContent,
MBObserver resultObserver)
向目标发送一条数据(默认QoS=true、typeu=-1、from_user_id="0")。
|
static void |
sendKickout(io.netty.channel.Channel sessionBeKick,
java.lang.String to_user_id,
int code,
java.lang.String reason)
向客户端发出被踢指令。
|
public static void sendData(java.lang.String to_user_id, java.lang.String dataContent, MBObserver resultObserver) throws java.lang.Exception
注:用户id为"0"是MobileIMSDK框架中的保留值,表示是服务端。
典型的消息发送代码示例,请见:sendData(Channel, Protocal, MBObserver)
方法中的详细说明。
to_user_id
- 接收方的user_iddataContent
- 发送的文本内容resultObserver
- 因netty的异步化特征,发送数据在API层也是异步的,本参数用于获得数据发送的结果通
知(这是与MINA的区别之一)。服务端为了获得高并发、高性能,失去传统网络编程同步调用时编码的便利也是在所
难免(再也不是直接的函数返回值了),开发者需适应之java.lang.Exception
- 发送过程中出现错误则抛出本异常#sendData(String, String, String, boolean, String, int, MBObserver)
public static void sendData(java.lang.String to_user_id, java.lang.String dataContent, int typeu, MBObserver resultObserver) throws java.lang.Exception
注:用户id为"0"是MobileIMSDK框架中的保留值,表示是服务端。
典型的消息发送代码示例,请见:sendData(Channel, Protocal, MBObserver)
方法中的详细说明。
to_user_id
- 接收方的user_iddataContent
- 发送的文本内容typeu
- 应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型。注意:此值为-1时表示未定义。
MobileIMSDK框架中,本字段为保留字段,不参与框架的核心算法,专留作应用层自行定义和使用。resultObserver
- 因netty的异步化特征,发送数据在API层也是异步的,本参数用于获得数据发送的结果通
知(这是与MINA的区别之一)。服务端为了获得高并发、高性能,失去传统网络编程同步调用时编码的便利也是在所
难免(再也不是直接的函数返回值了),开发者需适应之java.lang.Exception
- 发送过程中出现错误则抛出本异常#sendData(String, String, String, boolean, String, int, MBObserver)
public static void sendData(java.lang.String to_user_id, java.lang.String dataContent, boolean QoS, int typeu, MBObserver resultObserver) throws java.lang.Exception
注:用户id为"0"是MobileIMSDK框架中的保留值,表示是服务端。
典型的消息发送代码示例,请见: sendData(Channel, Protocal, MBObserver)
方法中的详细说明。
to_user_id
- 接收方的user_iddataContent
- 发送的文本内容QoS
- 是否需要QoS支持,true表示需要,否则不需要。当为true时系统将自动生成指纹码typeu
- 应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型。注意:此值为-1时表示未定义。
MobileIMSDK框架中,本字段为保留字段,不参与框架的核心算法,专留作应用层自行定义和使用。resultObserver
- 因netty的异步化特征,发送数据在API层也是异步的,本参数用于获得数据发送的结果通
知(这是与MINA的区别之一)。服务端为了获得高并发、高性能,失去传统网络编程同步调用时编码的便利也是在所
难免(再也不是直接的函数返回值了),开发者需适应之java.lang.Exception
- 发送过程中出现错误则抛出本异常#sendData(String, String, String, boolean, String, int, MBObserver)
public static void sendData(java.lang.String to_user_id, java.lang.String dataContent, boolean QoS, java.lang.String fingerPrint, MBObserver resultObserver) throws java.lang.Exception
注:用户id为"0"是MobileIMSDK框架中的保留值,表示是服务端。
典型的消息发送代码示例,请见:sendData(Channel, Protocal, MBObserver)
方法中的详细说明。
to_user_id
- 接收方的user_iddataContent
- 发送的文本内容QoS
- 是否需要QoS支持,true表示需要,否则不需要。当为false时fingerPrint字段值将无意义fingerPrint
- 消息指纹特征码,当QoS=true且本参数为null则表示由系统自动生成指纹码,否则使用本参数指明的指纹码resultObserver
- 因netty的异步化特征,发送数据在API层也是异步的,本参数用于获得数据发送的结果通
知(这是与MINA的区别之一)。服务端为了获得高并发、高性能,失去传统网络编程同步调用时编码的便利也是在所
难免(再也不是直接的函数返回值了),开发者需适应之java.lang.Exception
- 发送过程中出现错误则抛出本异常#sendData(String, String, String, boolean, String, int, MBObserver)
public static void sendData(java.lang.String to_user_id, java.lang.String dataContent, boolean QoS, java.lang.String fingerPrint, int typeu, MBObserver resultObserver) throws java.lang.Exception
注:用户id为"0"是MobileIMSDK框架中的保留值,表示是服务端。
典型的消息发送代码示例,请见: {@link #sendData(Channel, Protocal, MBObserver)} 方法中的详细说明。
to_user_id
- 接收方的user_iddataContent
- 发送的文本内容QoS
- 是否需要QoS支持,true表示需要,否则不需要。当为false时fingerPrint字段值将无意义fingerPrint
- 消息指纹特征码,当QoS=true且本参数为null则表示由系统自动生成指纹码,否则使用本参数指明的指纹码typeu
- 应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型。注意:此值为-1时表示未定义。
MobileIMSDK框架中,本字段为保留字段,不参与框架的核心算法,专留作应用层自行定义和使用。resultObserver
- 因netty的异步化特征,发送数据在API层也是异步的,本参数用于获得数据发送的结果通
知(这是与MINA的区别之一)。服务端为了获得高并发、高性能,失去传统网络编程同步调用时编码的便利也是在所
难免(再也不是直接的函数返回值了),开发者需适应之java.lang.Exception
- 发送过程中出现错误则抛出本异常sendData(Protocal, MBObserver)
public static void sendData(Protocal p, MBObserver resultObserver) throws java.lang.Exception
注:用户id为"0"是MobileIMSDK框架中的保留值,表示是服务端。
典型的消息发送代码示例,请见: sendData(Channel, Protocal, MBObserver)
方法中的详细说明。
p
- 要发送的内容(此对象封装了发送方user_id、接收方user_id、消息内容等)resultObserver
- 因netty的异步化特征,发送数据在API层也是异步的,本参数
用于获得数据发送的结果通知(这是与MINA的区别之一)。服务端为了获得高并发、高性
能,失去传统网络编程同步调用时编码的便利也是在所难免(再也不是直接的函数返回值了
),开发者需适应之java.lang.Exception
- 发送过程中出现错误则抛出本异常sendData(io.netty.channel.Channel, Protocal, MBObserver)
public static void sendData(io.netty.channel.Channel session, Protocal p, MBObserver resultObserver) throws java.lang.Exception
注:用户id为"0"是MobileIMSDK框架中的保留值,表示是服务端。
举个例子:以下是一段典型的服务端消息/指令发送代码:
// 消息接收者的id(这个id由你自已定义,对于MobileIMSDK来说只要保证唯一性即可) String destinationUserId = "400069"; // 这是要发送的消息("你好"是消息内容、“0”是消息发送者) final Protocal p = ProtocalFactory.createCommonData("你好", "0", destinationUserId, true, null, -1); // 对方在线的情况下,才需要实时发送,否则走离线处理逻辑 if(OnlineProcessor.isOnline(destinationUserId)) { // netty是异步通知数据发送结果的 MBObserver<Object> resultObserver = new MBObserver<Object>(){ public void update(boolean sucess, Object extraObj) { if(sucess){ // 你的消息/指令实时发送成功,不需要额外处理了 } else{ // TODO: 你的消息/指令实时发送失败,在这里实现离线消息处理逻辑! } } }; // 开始实时消息/指令的发送 LocalSendHelper.sendData(p, resultObserver); } else{ // TODO: 你的离线消息处理逻辑! }
session
- 接收者的会话对象引用p
- 要发送的内容(此对象封装了发送方user_id、接收方user_id、消息内容等)resultObserver
- 因netty的异步化特征,发送数据在API层也是异步的,本参数
用于获得数据发送的结果通知(这是与MINA的区别之一)。服务端为了获得高并发、高性
能,失去传统网络编程同步调用时编码的便利也是在所难免(再也不是直接的函数返回值了
),开发者需适应之java.lang.Exception
- 发送过程中出现错误则抛出本异常io.netty.channel.ChannelFuture#writeAndFlush(Object)
,
MBObserver
public static void replyDataForUnlogined(io.netty.channel.Channel session, Protocal p, MBObserver resultObserver) throws java.lang.Exception
本方法将由MobileIMSDK框架内部算法按需调用,目前不建议也不需要开发者调用。
session
- 被回复的会话p
- 回复的数据包resultObserver
- 因netty的异步化特征,发送数据在API层也是异步的,本参数
用于获得数据发送的结果通知(这是与MINA的区别之一)。服务端为了获得高并发、高性
能,失去传统网络编程同步调用时编码的便利也是在所难免(再也不是直接的函数返回值了
),开发者需适应之java.lang.Exception
- 发生时出错将抛出本异常sendData(io.netty.channel.Channel, Protocal, MBObserver)
public static void replyRecievedBack(io.netty.channel.Channel session, Protocal pFromClient, MBObserver resultObserver) throws java.lang.Exception
何为应答包?
应答包是MobileIMSDK框架中的QoS消息送达保证机制的一部分,即为了保证消息必达(QoS=true时),由客户端发出的
消息,只要到达服务端(c2c或c2s路径的消息),服务端就会返回ACK应答包,表示告诉客户端“消息已被收到”(实际上
这条消息的下半程,将由服务端来继续处理,但客户端就不需要具体知道后续的环节了。)
本方法将由MobileIMSDK框架内部算法按需调用,目前不建议也不需要开发者调用。
session
- 被回复的会话pFromClient
- 客户端发过来的数据包,本方法将据此包中的from、to、fp属性进行回复resultObserver
- 因netty的异步化特征,发送数据在API层也是异步的java.lang.Exception
- 当发送数据出错时将抛出本异常sendData(io.netty.channel.Channel, Protocal, MBObserver)
public static void sendKickout(io.netty.channel.Channel sessionBeKick, java.lang.String to_user_id, int code, java.lang.String reason) throws java.lang.Exception
sessionBeKick
- 被踢会话to_user_id
- 接收方code
- 被踢原因编码(本参数不可为空),see PKickoutInfo
中的常量定义,自定义被踢原因请使用>100的值reason
- 被踢原因描述(本参数可为空)java.lang.Exception