public abstract class WebSocketNode
extends java.lang.Object
详情见: https://redkale.org
限定符和类型 | 字段和说明 |
---|---|
protected WebSocketEngine |
localEngine |
protected java.net.InetSocketAddress |
localSncpAddress |
protected java.util.logging.Logger |
logger |
protected WebSocketNode |
remoteNode |
protected java.util.concurrent.Semaphore |
semaphore |
protected Convert |
sendConvert |
protected CacheSource<java.net.InetSocketAddress> |
sncpNodeAddresses |
static java.lang.String |
SOURCE_SNCP_ADDRS_KEY |
static java.lang.String |
SOURCE_SNCP_USERID_PREFIX |
构造器和说明 |
---|
WebSocketNode() |
限定符和类型 | 方法和说明 |
---|---|
protected abstract java.util.concurrent.CompletableFuture<java.lang.Integer> |
broadcastAction(java.net.InetSocketAddress targetAddress,
WebSocketAction action) |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
broadcastAction(WebSocketAction action)
广播操作, 给所有人发操作
|
java.util.concurrent.CompletableFuture<java.lang.Integer> |
broadcastMessage(Convert convert,
java.lang.Object message)
广播消息, 给所有人发消息
|
java.util.concurrent.CompletableFuture<java.lang.Integer> |
broadcastMessage(Convert convert,
java.lang.Object message0,
boolean last)
广播消息, 给所有人发消息
|
protected abstract java.util.concurrent.CompletableFuture<java.lang.Integer> |
broadcastMessage(java.net.InetSocketAddress targetAddress,
WebSocketRange wsrange,
java.lang.Object message,
boolean last) |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
broadcastMessage(java.lang.Object message)
广播消息, 给所有人发消息
|
java.util.concurrent.CompletableFuture<java.lang.Integer> |
broadcastMessage(java.lang.Object message,
boolean last)
广播消息, 给所有人发消息
|
java.util.concurrent.CompletableFuture<java.lang.Integer> |
broadcastMessage(WebSocketRange wsrange,
Convert convert,
java.lang.Object message)
广播消息, 给所有人发消息
|
java.util.concurrent.CompletableFuture<java.lang.Integer> |
broadcastMessage(WebSocketRange wsrange,
Convert convert,
java.lang.Object message0,
boolean last)
广播消息, 给所有人发消息
|
java.util.concurrent.CompletableFuture<java.lang.Integer> |
broadcastMessage(WebSocketRange wsrange,
java.lang.Object message)
广播消息, 给所有人发消息
|
java.util.concurrent.CompletableFuture<java.lang.Integer> |
broadcastMessage(WebSocketRange wsrange,
java.lang.Object message,
boolean last)
广播消息, 给所有人发消息
|
protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> |
changeUserid(java.io.Serializable fromuserid,
java.io.Serializable touserid,
java.net.InetSocketAddress sncpAddr) |
protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> |
connect(java.io.Serializable userid,
java.net.InetSocketAddress sncpAddr) |
void |
destroy(AnyValue conf) |
protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> |
disconnect(java.io.Serializable userid,
java.net.InetSocketAddress sncpAddr) |
java.util.concurrent.CompletableFuture<java.lang.Boolean> |
existsWebSocket(java.io.Serializable userid)
判断指定用户是否WebSocket在线
|
protected abstract java.util.concurrent.CompletableFuture<java.lang.Boolean> |
existsWebSocket(java.io.Serializable userid,
java.net.InetSocketAddress targetAddress) |
java.util.concurrent.CompletableFuture<java.lang.Boolean> |
existsWebSocket(WebSocketUserAddress userAddress)
判断指定用户是否WebSocket在线
|
java.util.concurrent.CompletableFuture<java.lang.Integer> |
forceCloseWebSocket(java.io.Serializable userid)
强制关闭用户WebSocket
|
protected abstract java.util.concurrent.CompletableFuture<java.lang.Integer> |
forceCloseWebSocket(java.io.Serializable userid,
java.net.InetSocketAddress targetAddress) |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
forceCloseWebSocket(WebSocketUserAddress userAddress)
强制关闭用户WebSocket
|
protected java.lang.Object |
formatRemoteMessage(java.lang.Object message) |
WebSocketEngine |
getLocalWebSocketEngine()
获取本地的WebSocketEngine,没有则返回null
|
java.util.concurrent.CompletableFuture<java.util.Collection<java.net.InetSocketAddress>> |
getRpcNodeAddresses(java.io.Serializable userid)
获取用户在线的SNCP节点地址列表,不是分布式则返回元素数量为1,且元素值为null的列表
InetSocketAddress 为 SNCP节点地址 |
java.util.concurrent.CompletableFuture<java.util.Map<java.net.InetSocketAddress,java.util.List<java.lang.String>>> |
getRpcNodeWebSocketAddresses(java.io.Serializable userid)
获取在线用户的详细连接信息
Map.key 为 SNCP节点地址, 含值为null的key表示没有分布式 Map.value 为 用户客户端的IP |
java.util.concurrent.Semaphore |
getSemaphore() |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
getUserSize()
获取在线用户总数
|
protected abstract java.util.concurrent.CompletableFuture<java.util.List<java.lang.String>> |
getWebSocketAddresses(java.net.InetSocketAddress targetAddress,
java.io.Serializable userid) |
void |
init(AnyValue conf) |
protected void |
postDestroy(AnyValue conf) |
protected void |
releaseSemaphore() |
protected java.util.concurrent.CompletableFuture<java.util.List<java.lang.String>> |
remoteWebSocketAddresses(java.net.InetSocketAddress targetAddress,
java.io.Serializable userid)
获取目标地址
该方法仅供内部调用 |
protected abstract java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendAction(java.net.InetSocketAddress targetAddress,
WebSocketAction action,
java.io.Serializable... userids) |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendAction(WebSocketAction action,
java.io.Serializable... userids)
向指定用户发送操作,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接 |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendAction(WebSocketAction action,
WebSocketUserAddress... useraddrs)
向指定用户发送操作,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接 |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendMessage(Convert convert,
java.lang.Object message0,
boolean last,
java.io.Serializable... userids)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接 |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendMessage(Convert convert,
java.lang.Object message0,
boolean last,
java.util.stream.Stream<? extends java.io.Serializable> userids)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接 |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendMessage(Convert convert,
java.lang.Object message0,
boolean last,
WebSocketUserAddress... useraddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接 |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendMessage(Convert convert,
java.lang.Object message,
java.io.Serializable... useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接 |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendMessage(Convert convert,
java.lang.Object message,
java.util.stream.Stream<? extends java.io.Serializable> useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接 |
protected abstract java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendMessage(java.net.InetSocketAddress targetAddress,
java.lang.Object message,
boolean last,
java.io.Serializable... userids) |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendMessage(java.lang.Object message,
boolean last,
java.io.Serializable... useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接 |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendMessage(java.lang.Object message,
boolean last,
java.util.stream.Stream<? extends java.io.Serializable> useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接 |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendMessage(java.lang.Object message,
java.io.Serializable... useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接 |
java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendMessage(java.lang.Object message,
java.util.stream.Stream<? extends java.io.Serializable> useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接 |
protected java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendOneAddrAction(java.net.InetSocketAddress sncpAddr,
WebSocketAction action,
java.io.Serializable... userids) |
protected java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendOneAddrMessage(java.net.InetSocketAddress sncpAddr,
java.lang.Object message,
boolean last,
java.io.Serializable... userids) |
protected java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendOneUserAction(WebSocketAction action,
java.io.Serializable userid) |
protected java.util.concurrent.CompletableFuture<java.lang.Integer> |
sendOneUserMessage(java.lang.Object message,
boolean last,
java.io.Serializable userid) |
protected boolean |
tryAcquireSemaphore() |
protected java.util.Map<java.net.InetSocketAddress,java.util.List<java.io.Serializable>> |
userAddressToAddrMap(WebSocketUserAddress... useraddrs) |
protected java.io.Serializable[] |
userAddressToUserids(WebSocketUserAddress... useraddrs) |
@Comment(value="\u5b58\u50a8\u7528\u6237ID\u7684key\u524d\u7f00") public static final java.lang.String SOURCE_SNCP_USERID_PREFIX
@Comment(value="\u5b58\u50a8\u5f53\u524dSNCP\u8282\u70b9\u5217\u8868\u7684key") public static final java.lang.String SOURCE_SNCP_ADDRS_KEY
protected final java.util.logging.Logger logger
protected java.net.InetSocketAddress localSncpAddress
@RpcRemote protected WebSocketNode remoteNode
protected Convert sendConvert
protected CacheSource<java.net.InetSocketAddress> sncpNodeAddresses
protected WebSocketEngine localEngine
protected java.util.concurrent.Semaphore semaphore
public void init(AnyValue conf)
public void destroy(AnyValue conf)
@Local public final java.util.concurrent.Semaphore getSemaphore()
protected abstract java.util.concurrent.CompletableFuture<java.util.List<java.lang.String>> getWebSocketAddresses(@RpcTargetAddress java.net.InetSocketAddress targetAddress, java.io.Serializable userid)
protected abstract java.util.concurrent.CompletableFuture<java.lang.Integer> sendMessage(@RpcTargetAddress java.net.InetSocketAddress targetAddress, java.lang.Object message, boolean last, java.io.Serializable... userids)
protected abstract java.util.concurrent.CompletableFuture<java.lang.Integer> broadcastMessage(@RpcTargetAddress java.net.InetSocketAddress targetAddress, WebSocketRange wsrange, java.lang.Object message, boolean last)
protected abstract java.util.concurrent.CompletableFuture<java.lang.Integer> sendAction(@RpcTargetAddress java.net.InetSocketAddress targetAddress, WebSocketAction action, java.io.Serializable... userids)
protected abstract java.util.concurrent.CompletableFuture<java.lang.Integer> broadcastAction(@RpcTargetAddress java.net.InetSocketAddress targetAddress, WebSocketAction action)
protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> connect(java.io.Serializable userid, java.net.InetSocketAddress sncpAddr)
protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> disconnect(java.io.Serializable userid, java.net.InetSocketAddress sncpAddr)
protected abstract java.util.concurrent.CompletableFuture<java.lang.Void> changeUserid(java.io.Serializable fromuserid, java.io.Serializable touserid, java.net.InetSocketAddress sncpAddr)
protected abstract java.util.concurrent.CompletableFuture<java.lang.Boolean> existsWebSocket(java.io.Serializable userid, @RpcTargetAddress java.net.InetSocketAddress targetAddress)
protected abstract java.util.concurrent.CompletableFuture<java.lang.Integer> forceCloseWebSocket(java.io.Serializable userid, @RpcTargetAddress java.net.InetSocketAddress targetAddress)
protected java.util.concurrent.CompletableFuture<java.util.List<java.lang.String>> remoteWebSocketAddresses(@RpcTargetAddress java.net.InetSocketAddress targetAddress, java.io.Serializable userid)
targetAddress
- InetSocketAddressuserid
- Serializablepublic java.util.concurrent.CompletableFuture<java.util.Collection<java.net.InetSocketAddress>> getRpcNodeAddresses(java.io.Serializable userid)
userid
- Serializablepublic java.util.concurrent.CompletableFuture<java.util.Map<java.net.InetSocketAddress,java.util.List<java.lang.String>>> getRpcNodeWebSocketAddresses(java.io.Serializable userid)
userid
- Serializablepublic java.util.concurrent.CompletableFuture<java.lang.Integer> getUserSize()
@Local public java.util.concurrent.CompletableFuture<java.lang.Boolean> existsWebSocket(java.io.Serializable userid)
userid
- Serializable@Local public java.util.concurrent.CompletableFuture<java.lang.Boolean> existsWebSocket(WebSocketUserAddress userAddress)
userAddress
- WebSocketUserAddress@Local public java.util.concurrent.CompletableFuture<java.lang.Integer> forceCloseWebSocket(java.io.Serializable userid)
userid
- Serializable@Local public java.util.concurrent.CompletableFuture<java.lang.Integer> forceCloseWebSocket(WebSocketUserAddress userAddress)
userAddress
- WebSocketUserAddress@Local public final WebSocketEngine getLocalWebSocketEngine()
@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> sendMessage(java.lang.Object message, java.util.stream.Stream<? extends java.io.Serializable> useridOrAddrs)
message
- 消息内容useridOrAddrs
- Stream@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> sendMessage(java.lang.Object message, java.io.Serializable... useridOrAddrs)
message
- 消息内容useridOrAddrs
- Serializable[]@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> sendMessage(Convert convert, java.lang.Object message, java.util.stream.Stream<? extends java.io.Serializable> useridOrAddrs)
convert
- Convertmessage
- 消息内容useridOrAddrs
- Stream@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> sendMessage(Convert convert, java.lang.Object message, java.io.Serializable... useridOrAddrs)
convert
- Convertmessage
- 消息内容useridOrAddrs
- Serializable[]@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> sendMessage(java.lang.Object message, boolean last, java.util.stream.Stream<? extends java.io.Serializable> useridOrAddrs)
message
- 消息内容last
- 是否最后一条useridOrAddrs
- Stream@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> sendMessage(java.lang.Object message, boolean last, java.io.Serializable... useridOrAddrs)
message
- 消息内容last
- 是否最后一条useridOrAddrs
- Serializable[]@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> sendMessage(Convert convert, java.lang.Object message0, boolean last, java.util.stream.Stream<? extends java.io.Serializable> userids)
convert
- Convertmessage0
- 消息内容last
- 是否最后一条userids
- Stream@Local public java.util.concurrent.CompletableFuture<java.lang.Integer> sendMessage(Convert convert, java.lang.Object message0, boolean last, java.io.Serializable... userids)
convert
- Convertmessage0
- 消息内容last
- 是否最后一条userids
- Serializable[]@Local public java.util.concurrent.CompletableFuture<java.lang.Integer> sendMessage(Convert convert, java.lang.Object message0, boolean last, WebSocketUserAddress... useraddrs)
convert
- Convertmessage0
- 消息内容last
- 是否最后一条useraddrs
- WebSocketUserAddress[]protected java.util.concurrent.CompletableFuture<java.lang.Integer> sendOneUserMessage(java.lang.Object message, boolean last, java.io.Serializable userid)
protected java.util.concurrent.CompletableFuture<java.lang.Integer> sendOneAddrMessage(java.net.InetSocketAddress sncpAddr, java.lang.Object message, boolean last, java.io.Serializable... userids)
protected java.io.Serializable[] userAddressToUserids(WebSocketUserAddress... useraddrs)
protected java.util.Map<java.net.InetSocketAddress,java.util.List<java.io.Serializable>> userAddressToAddrMap(WebSocketUserAddress... useraddrs)
@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> broadcastMessage(java.lang.Object message)
message
- 消息内容@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> broadcastMessage(WebSocketRange wsrange, java.lang.Object message)
wsrange
- 过滤条件message
- 消息内容@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> broadcastMessage(Convert convert, java.lang.Object message)
convert
- Convertmessage
- 消息内容@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> broadcastMessage(WebSocketRange wsrange, Convert convert, java.lang.Object message)
wsrange
- 过滤条件convert
- Convertmessage
- 消息内容@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> broadcastMessage(java.lang.Object message, boolean last)
message
- 消息内容last
- 是否最后一条@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> broadcastMessage(WebSocketRange wsrange, java.lang.Object message, boolean last)
wsrange
- 过滤条件message
- 消息内容last
- 是否最后一条@Local public final java.util.concurrent.CompletableFuture<java.lang.Integer> broadcastMessage(Convert convert, java.lang.Object message0, boolean last)
convert
- Convertmessage0
- 消息内容last
- 是否最后一条@Local public java.util.concurrent.CompletableFuture<java.lang.Integer> broadcastMessage(WebSocketRange wsrange, Convert convert, java.lang.Object message0, boolean last)
wsrange
- 过滤条件convert
- Convertmessage0
- 消息内容last
- 是否最后一条@Local public java.util.concurrent.CompletableFuture<java.lang.Integer> broadcastAction(WebSocketAction action)
action
- 操作参数@Local public java.util.concurrent.CompletableFuture<java.lang.Integer> sendAction(WebSocketAction action, java.io.Serializable... userids)
action
- 操作参数userids
- Serializable[]@Local public java.util.concurrent.CompletableFuture<java.lang.Integer> sendAction(WebSocketAction action, WebSocketUserAddress... useraddrs)
action
- 操作参数useraddrs
- WebSocketUserAddress[]protected java.util.concurrent.CompletableFuture<java.lang.Integer> sendOneUserAction(WebSocketAction action, java.io.Serializable userid)
protected java.util.concurrent.CompletableFuture<java.lang.Integer> sendOneAddrAction(java.net.InetSocketAddress sncpAddr, WebSocketAction action, java.io.Serializable... userids)
protected java.lang.Object formatRemoteMessage(java.lang.Object message)
protected boolean tryAcquireSemaphore()
protected void releaseSemaphore()