public abstract class ServerLauncher
extends java.lang.Object
为了简化API的调用,理论上使用者使用本类公开的方法即可实现MobileIMSDK 的所有能力。
本类主要实现服务端的初始化、基本服务的启停以及一些提供给开发者的公开API。
服务端默认不会自动开启,请调用 startup()以便启动MobileIMSDK的服务端, shutdown()关闭
服务端,直到再次调用 startup() 。
提示1:
请重写 initListeners()方法,以实现应用层的回调监听器以便实现自定义业务逻辑。
提示2:
如要开启与MobileIMSDK-Web版的消息互通,请设置 bridgeEnabled == true
,默认为false.
ServerCoreHandler| 限定符和类型 | 字段和说明 |
|---|---|
static boolean |
bridgeEnabled
是否允许与MobileIMSDK Web版进行互通。
|
protected ServerCoreHandler |
serverCoreHandler
MobileIMSDK框架的核心通信逻辑实现类(实现的是MobileIMSDK服务端的通信处理核心算法)。
|
static boolean |
serverTimestamp
是否为消息/指令打上服务端时间戳。
|
static int |
supportedGateways
当前支持的接入网关类型(即支持的网络传输协议类型)。
|
| 构造器和说明 |
|---|
ServerLauncher() |
| 限定符和类型 | 方法和说明 |
|---|---|
protected void |
bind()
绑定端口,启动网络接入服务。
|
protected GatewayTCP |
createGatewayTCP()
创建TCP协议的网关对象。
|
protected GatewayUDP |
createGatewayUDP()
创建UDP协议的网关对象。
|
protected GatewayWebsocket |
createGatewayWebsocket()
创建WebSocket协议的网关对象。
|
ServerCoreHandler |
getServerCoreHandler()
获取 ServerCoreHandler 对象引用。
|
ServerEventListener |
getServerEventListener()
返回服务端通用事件回调监听器对象引用。
|
MessageQoSEventListenerS2C |
getServerMessageQoSEventListener()
返回QoS机制的Server主动消息发送之质量保证事件监听器对象。
|
protected void |
initGateways()
初始化 网关(一个网关实例对应一种网络通信类型)。
|
protected abstract void |
initListeners()
初始化回调处理事件监听器。
|
protected ServerCoreHandler |
initServerCoreHandler()
初始化MobileIMSDK的ServerCoreHandler实现类。
|
boolean |
isRunning()
服务端是否启动并运行中。
|
void |
setServerEventListener(ServerEventListener serverEventListener)
设置服务端通用事件回调监听器。
|
void |
setServerMessageQoSEventListener(MessageQoSEventListenerS2C serverMessageQoSEventListener)
设置QoS机制的Server主动消息发送之质量保证事件监听器。
|
void |
shutdown()
关闭服务端。
|
void |
startup()
开启服务端。
|
public static boolean serverTimestamp
此时间戳可以辅助用于应用层处理消息的顺序问题。
public static boolean bridgeEnabled
注意:请在 startup()方法被调用前被设置,否则将不起效.
public static int supportedGateways
注意:请在 startup()方法被调用前被设置,否则将不起效.
使用举例:
1)仅支持UDP时,设置本参数为:Gateway.SOCKET_TYPE_UDP; 2)仅支持TCP时,设置本参数:Gateway.SOCKET_TYPE_TCP; 3)仅支持WebSocket时,设置本参数:Gateway.SOCKET_TYPE_WEBSOCKET; 3)需支持UDP+TCP+WebSocket时,设置本参数:Gateway.SOCKET_TYPE_UDP | Gateway.SOCKET_TYPE_TCP | Gateway.SOCKET_TYPE_WEBSOCKET;
Gateway.SOCKET_TYPE_UDP,
Gateway.SOCKET_TYPE_TCP,
Gateway.SOCKET_TYPE_WEBSOCKETprotected ServerCoreHandler serverCoreHandler
protected ServerCoreHandler initServerCoreHandler()
本类是MobileIMSDK的服务端网络调度算法核心所在,其性能将决定整个 即时通讯架构的数据交换性能、负载能力、吞吐效率等。
protected abstract void initListeners()
请重写 initListeners()方法,以实现应用层的回调监听器以便实现自定义业务
逻辑,可以设置的回调监听器有: setServerEventListener(ServerEventListener)
和 setServerMessageQoSEventListener(MessageQoSEventListenerS2C)。
protected void initGateways()
protected GatewayUDP createGatewayUDP()
protected GatewayTCP createGatewayTCP()
protected GatewayWebsocket createGatewayWebsocket()
public void startup()
throws java.lang.Exception
java.io.IOException - 端口绑定失败将抛出本异常java.lang.ExceptioninitServerCoreHandler(),
initListeners(),
initGateways(),
QoS4ReciveDaemonRoot.startup(),
QoS4SendDaemonRoot.startup(boolean),
ServerCoreHandler.lazyStartupBridgeProcessor(),
bridgeEnabled,
AbstractBootstrap.bind(String, int)protected void bind()
throws java.lang.Exception
java.lang.Exceptionpublic void shutdown()
ChannelOutboundInvoker.close(),
QoS4ReciveDaemonRoot.stop(),
QoS4SendDaemonRoot.stop(),
net.x52im.mobileimsdk.server.bridge.QoS4ReciveDaemonC2B#stop(),
net.x52im.mobileimsdk.server.bridge.QoS4SendDaemonB2C#stop()public ServerEventListener getServerEventListener()
ServerCoreHandler.getServerEventListener()public void setServerEventListener(ServerEventListener serverEventListener)
serverEventListener - ServerEventListener对象ServerCoreHandler.setServerEventListener(ServerEventListener)public MessageQoSEventListenerS2C getServerMessageQoSEventListener()
ServerCoreHandler.getServerMessageQoSEventListener()public void setServerMessageQoSEventListener(MessageQoSEventListenerS2C serverMessageQoSEventListener)
serverMessageQoSEventListener - MessageQoSEventListenerS2C对象ServerCoreHandler.setServerMessageQoSEventListener(MessageQoSEventListenerS2C)public ServerCoreHandler getServerCoreHandler()
public boolean isRunning()