public abstract class AbstractWsEndpoint extends Object
@ServerEndpoint(value = "/websocket", configurator=NutWsConfigurator.class)
@IocBean(create="init", depose="depose")
| 限定符和类型 | 字段和说明 |
|---|---|
protected ConcurrentHashMap<String,WsHandler> |
handlers
存放Websocket Session Id --> WsHandler 的映射关系
|
protected Field |
idField
用于修改Session的Id字段
|
protected String |
roomPrefix |
protected WsRoomProvider |
roomProvider
房间提供者.
|
protected ConcurrentHashMap<String,javax.websocket.Session> |
sessions
存放Websocket Session Id --> Session 的映射关系
|
| 构造器和说明 |
|---|
AbstractWsEndpoint() |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
_onClose(javax.websocket.Session session,
javax.websocket.CloseReason closeReason) |
void |
_onError(javax.websocket.Session session,
Throwable throwable) |
void |
_onMesssageString(javax.websocket.Session session,
String msg) |
void |
_onOpen(javax.websocket.Session session,
javax.websocket.EndpointConfig config) |
protected void |
changeSessionId(javax.websocket.Session session)
WebSocketSession只对当前JVM是唯一的,所以我们要改造一下, 变成UUID.
|
WsHandler |
createHandler(javax.websocket.Session session,
javax.websocket.EndpointConfig config)
根据WebSocket会话创建一个WsHandler.
|
void |
each(String room,
org.nutz.lang.Each<javax.websocket.Session> callback)
按房间遍历活跃的session对象
|
WsHandler |
getHandler(String wsid)
根据wsid获取其WsHandler实例
|
String |
getRoomPrefix() |
WsRoomProvider |
getRoomProvider() |
javax.websocket.Session |
getSession(String wsid)
返回一个活跃的WebSocket Session对象
|
javax.websocket.Session |
getSession(String wsid,
boolean opened)
根据wsid获取一个Session对象.
|
boolean |
isUndertowSession(javax.websocket.Session session) |
void |
onClose(javax.websocket.Session session,
javax.websocket.CloseReason closeReason)
WebSocket会话关闭是调用本方法,通常是用户关闭浏览器.
|
void |
onError(javax.websocket.Session session,
Throwable throwable)
WebSocket会话出错时调用,默认调用onClose.
|
void |
onMesssageString(javax.websocket.Session session,
String msg) |
void |
onOpen(javax.websocket.Session session,
javax.websocket.EndpointConfig config)
Websocket会话创建成功时调用本方法, 将创建WsHandler实例,并登记之.
|
boolean |
sendBinary(String wsid,
Object msg)
异步非阻塞发送一段二进制数据到指定的WebSocket Session
|
boolean |
sendBinarySync(String wsid,
Object msg)
sendBinary的同步阻塞版本
|
boolean |
sendJson(String wsid,
Object msg)
异步非阻塞发送文本信息到指定的WebSocket Session
|
boolean |
sendJsonSync(String wsid,
Object msg)
sendJson的同步阻塞版本
|
boolean |
sendText(String wsid,
CharSequence text)
异步非阻塞发送文本信息到指定的WebSocket Session
|
boolean |
sendTextSync(String wsid,
CharSequence text)
sendText的同步阻塞版本
|
void |
setRoomPrefix(String roomPrefix) |
void |
setRoomProvider(WsRoomProvider roomProvider) |
ByteBuffer |
toByteBuffer(Object msg)
把byte[]/InputStream/ByteBuffer转换为ByteBuffer,其他类型的实例将toString()然后转byte[]再封装为ByteBuffer
|
protected ConcurrentHashMap<String,WsHandler> handlers
protected ConcurrentHashMap<String,javax.websocket.Session> sessions
protected WsRoomProvider roomProvider
protected Field idField
protected String roomPrefix
public void onOpen(javax.websocket.Session session,
javax.websocket.EndpointConfig config)
public void _onOpen(javax.websocket.Session session,
javax.websocket.EndpointConfig config)
public void onClose(javax.websocket.Session session,
javax.websocket.CloseReason closeReason)
public void _onClose(javax.websocket.Session session,
javax.websocket.CloseReason closeReason)
public void onError(javax.websocket.Session session,
Throwable throwable)
public void _onError(javax.websocket.Session session,
Throwable throwable)
public void onMesssageString(javax.websocket.Session session,
String msg)
public void _onMesssageString(javax.websocket.Session session,
String msg)
protected void changeSessionId(javax.websocket.Session session)
public WsHandler createHandler(javax.websocket.Session session, javax.websocket.EndpointConfig config)
public javax.websocket.Session getSession(String wsid)
wsid - session的idpublic javax.websocket.Session getSession(String wsid, boolean opened)
wsid - session的idopened - 是否检查活跃状态public boolean sendText(String wsid, CharSequence text)
wsid - session的idtext - 文本信息public boolean sendTextSync(String wsid, CharSequence text)
wsid - session的idtext - 文本信息public boolean sendJson(String wsid, Object msg)
wsid - session的idmsg - 将转换为Json字符串的对象public boolean sendJsonSync(String wsid, Object msg)
wsid - session的idmsg - 将转换为Json字符串的对象public ByteBuffer toByteBuffer(Object msg)
msg - byte[]/InputStream/ByteBuffer等对象public boolean sendBinary(String wsid, Object msg)
wsid - session的idmsg - byte[]/InputStream/ByteBuffer等public void each(String room, org.nutz.lang.Each<javax.websocket.Session> callback)
room - callback - public WsRoomProvider getRoomProvider()
public void setRoomProvider(WsRoomProvider roomProvider)
public String getRoomPrefix()
public void setRoomPrefix(String roomPrefix)
public boolean isUndertowSession(javax.websocket.Session session)
Copyright © 2019. All rights reserved.