public abstract class WebSocket
extends java.lang.Object
一个WebSocket连接对应一个WebSocket实体,即一个WebSocket会绑定一个TCP连接。
WebSocket 有两种模式:
1) 普通模式: 协议上符合HTML5规范, 其流程顺序如下:
1.1 onOpen 如果方法返回null,则视为WebSocket的连接不合法,框架会强制关闭WebSocket连接;通常用于判断登录态。
1.2 createGroupid 如果方法返回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 createGroupid 如果方法返回null,则视为WebSocket的连接不合法,框架会强制关闭WebSocket连接;通常用于判断用户权限是否符合。
2.3 onRead WebSocket成功连接后回调此方法, 由此方法处理原始的TCP连接, 同时业务代码去控制WebSocket的关闭。
此模式下 以上方法都应该被重载。
详情见: http://www.redkale.org
| 限定符和类型 | 字段和说明 |
|---|---|
static int |
RETCODE_ENGINE_NULL |
static int |
RETCODE_GROUP_EMPTY |
static int |
RETCODE_ILLEGALBUFFER |
static int |
RETCODE_NODESERVICE_NULL |
static int |
RETCODE_SEND_ILLPACKET |
static int |
RETCODE_SENDEXCEPTION |
static int |
RETCODE_WSOCKET_CLOSED |
static int |
RETCODE_WSOFFLINE |
| 限定符 | 构造器和说明 |
|---|---|
protected |
WebSocket() |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
close()
显式地关闭WebSocket
|
protected abstract java.io.Serializable |
createGroupid()
创建groupid, null表示异常
|
<T> T |
getAttribute(java.lang.String name)
获取当前WebSocket下的属性
|
long |
getCreatetime() |
java.io.Serializable |
getGroupid()
获取当前WebSocket所属的groupid
|
protected java.util.Collection<java.net.InetSocketAddress> |
getOnlineNodes(java.io.Serializable groupid)
获取在线用户的节点地址列表
|
protected java.util.Map<java.net.InetSocketAddress,java.util.List<java.lang.String>> |
getOnlineRemoteAddress(java.io.Serializable groupid)
获取在线用户的详细连接信息
|
java.lang.String |
getRemoteAddr()
获取客户端真实地址
|
java.net.SocketAddress |
getRemoteAddress()
获取客户端直接地址, 当WebSocket连接是由代理服务器转发的,则该值固定为代理服务器的IP地址
|
java.io.Serializable |
getSessionid()
获取当前WebSocket的会话ID, 不会为null
|
protected WebSocketGroup |
getWebSocketGroup()
获取当前WebSocket所属的WebSocketGroup, 不会为null
|
protected WebSocketGroup |
getWebSocketGroup(java.io.Serializable groupid)
获取指定groupid的WebSocketGroup, 没有返回null
|
protected java.util.Collection<WebSocketGroup> |
getWebSocketGroups() |
void |
onClose(int code,
java.lang.String reason) |
void |
onConnected() |
void |
onFragment(byte[] bytes,
boolean last) |
void |
onFragment(java.lang.String text,
boolean last) |
void |
onMessage(byte[] bytes) |
void |
onMessage(java.lang.String text) |
java.io.Serializable |
onOpen(HttpRequest request)
返回sessionid, null表示连接不合法或异常
|
void |
onPing(byte[] bytes) |
void |
onPong(byte[] bytes) |
void |
onRead(AsyncConnection channel) |
<T> T |
removeAttribute(java.lang.String name)
移出当前WebSocket下的属性
|
int |
send(byte[] data)
发送单一的二进制消息
|
int |
send(byte[] data,
boolean last)
发送二进制消息
|
int |
send(java.io.Serializable message,
boolean last)
发送消息, 消息类型是String或byte[]
|
int |
send(java.lang.String text)
发送单一的文本消息
|
int |
send(java.lang.String text,
boolean last)
发送文本消息
|
int |
send(WebSocketPacket packet)
发送消息体, 包含二进制/文本
|
int |
sendEachMessage(java.io.Serializable groupid,
byte[] data)
给指定groupid的WebSocketGroup下所有WebSocket节点发送二进制消息
|
int |
sendEachMessage(java.io.Serializable groupid,
byte[] data,
boolean last)
给指定groupid的WebSocketGroup下所有WebSocket节点发送二进制消息
|
int |
sendEachMessage(java.io.Serializable groupid,
java.lang.String text)
给指定groupid的WebSocketGroup下所有WebSocket节点发送文本消息
|
int |
sendEachMessage(java.io.Serializable groupid,
java.lang.String text,
boolean last)
给指定groupid的WebSocketGroup下所有WebSocket节点发送文本消息
|
int |
sendPing() |
int |
sendPing(byte[] data) |
int |
sendPong(byte[] data) |
int |
sendRecentMessage(java.io.Serializable groupid,
byte[] data)
给指定groupid的WebSocketGroup下最近活跃的WebSocket节点发送二进制消息
|
int |
sendRecentMessage(java.io.Serializable groupid,
byte[] data,
boolean last)
给指定groupid的WebSocketGroup下最近活跃的WebSocket节点发送二进制消息
|
int |
sendRecentMessage(java.io.Serializable groupid,
java.lang.String text)
给指定groupid的WebSocketGroup下最近活跃的WebSocket节点发送文本消息
|
int |
sendRecentMessage(java.io.Serializable groupid,
java.lang.String text,
boolean last)
给指定groupid的WebSocketGroup下最近活跃的WebSocket节点发送文本消息
|
void |
setAttribute(java.lang.String name,
java.lang.Object value)
给当前WebSocket下的增加属性
|
java.lang.String |
toString() |
public static final int RETCODE_SEND_ILLPACKET
public static final int RETCODE_WSOCKET_CLOSED
public static final int RETCODE_ILLEGALBUFFER
public static final int RETCODE_SENDEXCEPTION
public static final int RETCODE_ENGINE_NULL
public static final int RETCODE_NODESERVICE_NULL
public static final int RETCODE_GROUP_EMPTY
public static final int RETCODE_WSOFFLINE
public final int send(WebSocketPacket packet)
packet - WebSocketPacketpublic final void close()
public final int send(java.lang.String text)
text - 不可为空public final int send(java.lang.String text,
boolean last)
text - 不可为空last - 是否最后一条public final int send(byte[] data)
data - byte[]public final int sendPing()
public final int sendPing(byte[] data)
public final int sendPong(byte[] data)
public final long getCreatetime()
public final int send(byte[] data,
boolean last)
data - 不可为空last - 是否最后一条public final int send(java.io.Serializable message,
boolean last)
message - 不可为空, 只能是String或者byte[]last - 是否最后一条public final int sendEachMessage(java.io.Serializable groupid,
java.lang.String text)
groupid - groupidtext - 不可为空public final int sendEachMessage(java.io.Serializable groupid,
byte[] data)
groupid - groupiddata - 不可为空public final int sendEachMessage(java.io.Serializable groupid,
java.lang.String text,
boolean last)
groupid - groupidtext - 不可为空last - 是否最后一条public final int sendEachMessage(java.io.Serializable groupid,
byte[] data,
boolean last)
groupid - groupiddata - 不可为空last - 是否最后一条public final int sendRecentMessage(java.io.Serializable groupid,
java.lang.String text)
groupid - groupidtext - 不可为空public final int sendRecentMessage(java.io.Serializable groupid,
byte[] data)
groupid - groupiddata - 不可为空public final int sendRecentMessage(java.io.Serializable groupid,
java.lang.String text,
boolean last)
groupid - groupidtext - 不可为空last - 是否最后一条public final int sendRecentMessage(java.io.Serializable groupid,
byte[] data,
boolean last)
groupid - groupiddata - 不可为空last - 是否最后一条protected final java.util.Collection<java.net.InetSocketAddress> getOnlineNodes(java.io.Serializable groupid)
groupid - groupidprotected final java.util.Map<java.net.InetSocketAddress,java.util.List<java.lang.String>> getOnlineRemoteAddress(java.io.Serializable groupid)
groupid - groupidpublic final <T> T getAttribute(java.lang.String name)
T - 属性值的类型name - 属性名public final <T> T removeAttribute(java.lang.String name)
T - 属性值的类型name - 属性名public final void setAttribute(java.lang.String name,
java.lang.Object value)
name - 属性值value - 属性值public final java.io.Serializable getGroupid()
public final java.io.Serializable getSessionid()
public final java.net.SocketAddress getRemoteAddress()
public final java.lang.String getRemoteAddr()
protected final WebSocketGroup getWebSocketGroup()
protected final WebSocketGroup getWebSocketGroup(java.io.Serializable groupid)
groupid - groupidprotected final java.util.Collection<WebSocketGroup> getWebSocketGroups()
public java.io.Serializable onOpen(HttpRequest request)
request - HttpRequestprotected abstract java.io.Serializable createGroupid()
public void onRead(AsyncConnection channel)
channel - 请求连接public void onConnected()
public void onMessage(java.lang.String text)
public void onPing(byte[] bytes)
public void onPong(byte[] bytes)
public void onMessage(byte[] bytes)
public void onFragment(java.lang.String text,
boolean last)
public void onFragment(byte[] bytes,
boolean last)
public void onClose(int code,
java.lang.String reason)
public java.lang.String toString()
toString 在类中 java.lang.Object