From 25684126aa6e54b713bb4988d803fa6ec8852e04 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Mon, 19 Jun 2017 13:47:15 +0800 Subject: [PATCH] --- net.html | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/net.html b/net.html index c9fac5081..ac1392bb6 100644 --- a/net.html +++ b/net.html @@ -175,19 +175,13 @@
WebSokcet 服务
WebSokcet协议遵循IETF RFC 6455,其接口并不符合Java EE中的WebSocket的接口规范。
一个WebSocket连接对应一个WebSocket实体,即一个WebSocket会绑定一个TCP连接。且有两种模式:
- 1) 普通模式: 协议上符合HTML5规范, 其流程顺序如下:
+ 协议上符合HTML5规范, 其流程顺序如下:
1.1 onOpen 若返回null,视为WebSocket的连接不合法,强制关闭WebSocket连接;通常用于判断登录态。
1.2 createUserid 若返回null,视为WebSocket的连接不合法,强制关闭WebSocket连接;通常用于判断用户权限是否符合。
1.3 onConnected WebSocket成功连接后在准备接收数据前回调此方法。
1.4 onMessage/onFragment+ WebSocket接收到消息后回调此消息类方法。
1.5 onClose WebSocket被关闭后回调此方法。
此模式下 以上方法都应该被重载。
-
- 2) 原始二进制模式: 此模式有别于HTML5规范,可以视为原始的TCP连接。通常用于音频视频通讯场景。其流程顺序如下:
- 2.1 onOpen 如果方法返回null,视为WebSocket的连接不合法,强制关闭WebSocket连接;通常用于判断登录态。
- 2.2 createUserid 若返回null,视为WebSocket的连接不合法,强制关闭WebSocket连接;通常用于判断用户权限是否符合。
- 2.3 onRead WebSocket成功连接后回调此方法, 由此方法处理原始的TCP连接, 同时业务代码去控制WebSocket的关闭。
- 此模式下 以上方法都应该被重载。
实现一个WebSocket服务需要继承 org.redkale.net.http.WebSocketServlet,以下是一个简单的聊天范例:
@WebServlet("/ws/chat")
@@ -700,10 +694,10 @@
public CompletableFuture<Integer> send(Object message, boolean last);
//给自身发送消息, 消息类型是JavaBean对象 返回结果0表示成功,非0表示错误码
- public CompletableFuture<Integer> send(JsonConvert convert, Object message);
+ public CompletableFuture<Integer> send(Convert convert, Object message);
//给自身发送消息, 消息类型是JavaBean对象 返回结果0表示成功,非0表示错误码
- public CompletableFuture<Integer> send(JsonConvert convert, Object message, boolean last);
+ public CompletableFuture<Integer> send(Convert convert, Object message, boolean last);
//给指定userid的WebSocket节点发送 二进制消息/文本消息/JavaBean对象消息 返回结果0表示成功,非0表示错误码
public CompletableFuture<Integer> sendMessage(Object message, G... userids);
@@ -752,9 +746,6 @@
//创建userid, null表示异常, 必须实现该方法
protected abstract G createUserid();
- //标记为@WebSocketBinary才需要重写此方法
- public void onRead(AsyncConnection channel);
-
//WebSokcet连接成功后的回调方法
public void onConnected();
@@ -767,6 +758,9 @@
//接收到消息的回调方法
public void onMessage(T message, boolean last);
+ //接收到文本消息的回调方法
+ public void onMessage(String message, boolean last);
+
//接收到二进制消息的回调方法
public void onMessage(byte[] bytes, boolean last);