- java.lang.Object
-
- org.redkale.net.http.WebSocketNode
-
- 所有已实现的接口:
Service
- 直接已知子类:
WebSocketNodeService
public abstract class WebSocketNode extends Object implements Service
注: 部署了WebSocketNodeService就必然要配置SNCP协议的Server,不然无法做到WebSocketNode.sendMessage方法的有效性详情见: https://redkale.org
- 作者:
- zhangjx
-
-
字段概要
字段 修饰符和类型 字段 说明 protected WebSocketEnginelocalEngineprotected InetSocketAddresslocalSncpAddressprotected Loggerloggerprotected MessageAgentmessageAgentprotected Stringnameprotected Stringnodeidprotected WebSocketNoderemoteNodeprotected Semaphoresemaphoreprotected ConvertsendConvertprotected CacheSourcesourcestatic StringWS_SOURCE_KEY_NODESstatic StringWS_SOURCE_KEY_USERID_PREFIXprotected WebSocketAddresswsNodeAddress
-
构造器概要
构造器 构造器 说明 WebSocketNode()
-
方法概要
所有方法 实例方法 抽象方法 具体方法 修饰符和类型 方法 说明 protected abstract CompletableFuture<Integer>broadcastAction(String topic, InetSocketAddress targetAddress, WebSocketAction action)CompletableFuture<Integer>broadcastAction(WebSocketAction action)广播操作, 给所有人发操作CompletableFuture<Integer>broadcastMessage(Object message)广播消息, 给所有人发消息CompletableFuture<Integer>broadcastMessage(Object message, boolean last)广播消息, 给所有人发消息protected abstract CompletableFuture<Integer>broadcastMessage(String topic, InetSocketAddress targetAddress, WebSocketRange wsrange, Object message, boolean last)CompletableFuture<Integer>broadcastMessage(Convert convert, Object message)广播消息, 给所有人发消息CompletableFuture<Integer>broadcastMessage(Convert convert, Object message0, boolean last)广播消息, 给所有人发消息CompletableFuture<Integer>broadcastMessage(WebSocketRange wsrange, Object message)广播消息, 给所有人发消息CompletableFuture<Integer>broadcastMessage(WebSocketRange wsrange, Object message, boolean last)广播消息, 给所有人发消息CompletableFuture<Integer>broadcastMessage(WebSocketRange wsrange, Convert convert, Object message)广播消息, 给所有人发消息CompletableFuture<Integer>broadcastMessage(WebSocketRange wsrange, Convert convert, Object message0, boolean last)广播消息, 给所有人发消息protected abstract CompletableFuture<Void>changeUserid(Serializable fromuserid, Serializable touserid, WebSocketAddress wsaddr)protected abstract CompletableFuture<Void>connect(Serializable userid, WebSocketAddress wsaddr)voiddestroy(AnyValue conf)进程退出时,调用Service销毁 远程模式下该方法会重载成空方法 注意: 在此方法内不能调用MessageClient.sendMessage 方法,因为Application关闭时会先destroy掉MessageClientprotected abstract CompletableFuture<Void>disconnect(Serializable userid, WebSocketAddress wsaddr)CompletableFuture<Boolean>existsWebSocket(Serializable userid)判断指定用户是否WebSocket在线protected abstract CompletableFuture<Boolean>existsWebSocket(Serializable userid, String topic, InetSocketAddress targetAddress)CompletableFuture<Boolean>existsWebSocket(WebSocketUserAddress userAddress)判断指定用户是否WebSocket在线CompletableFuture<Integer>forceCloseWebSocket(Serializable userid)强制关闭用户WebSocketprotected abstract CompletableFuture<Integer>forceCloseWebSocket(Serializable userid, String topic, InetSocketAddress targetAddress)CompletableFuture<Integer>forceCloseWebSocket(WebSocketUserAddress userAddress)强制关闭用户WebSocketprotected ObjectformatRemoteMessage(Object message)WebSocketEnginegetLocalWebSocketEngine()获取本地的WebSocketEngine,没有则返回nullMessageAgentgetMessageAgent()StringgetName()CompletableFuture<Set<WebSocketAddress>>getRpcNodeAddresses(Serializable userid)获取用户在线的SNCP节点地址列表,不是分布式则返回元素数量为1,且元素值为null的列表
WebSocketAddress 为 SNCP节点地址CompletableFuture<Map<WebSocketAddress,List<String>>>getRpcNodeWebSocketAddresses(Serializable userid)获取在线用户的详细连接信息
Map.key 为 SNCP节点地址, 含值为null的key表示没有分布式 Map.value 为 用户客户端的IPSemaphoregetSemaphore()CompletableFuture<Set<String>>getUserSet()获取在线用户总数CompletableFuture<Integer>getUserSize()获取在线用户总数protected abstract CompletableFuture<Integer>getUserSize(String topic, InetSocketAddress targetAddress)protected abstract CompletableFuture<List<String>>getWebSocketAddresses(String topic, InetSocketAddress targetAddress, Serializable userid)voidinit(AnyValue conf)该方法必须是可以重复调用, 当reload时需要重复调用init方法 远程模式下该方法会重载成空方法protected voidpostDestroy(AnyValue conf)protected voidreleaseSemaphore()protected CompletableFuture<List<String>>remoteWebSocketAddresses(String topic, InetSocketAddress targetAddress, Serializable userid)获取目标地址
该方法仅供内部调用protected abstract CompletableFuture<Integer>sendAction(String topic, InetSocketAddress targetAddress, WebSocketAction action, Serializable... userids)CompletableFuture<Integer>sendAction(WebSocketAction action, Serializable... userids)向指定用户发送操作,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接CompletableFuture<Integer>sendAction(WebSocketAction action, WebSocketUserAddress... useraddrs)向指定用户发送操作,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接CompletableFuture<Integer>sendMessage(Object message, boolean last, Serializable... useridOrAddrs)向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接CompletableFuture<Integer>sendMessage(Object message, boolean last, Stream<? extends Serializable> useridOrAddrs)向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接CompletableFuture<Integer>sendMessage(Object message, Serializable... useridOrAddrs)向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接CompletableFuture<Integer>sendMessage(Object message, Stream<? extends Serializable> useridOrAddrs)向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接protected abstract CompletableFuture<Integer>sendMessage(String topic, InetSocketAddress targetAddress, Object message, boolean last, Serializable... userids)CompletableFuture<Integer>sendMessage(Convert convert, Object message0, boolean last, Serializable... userids)向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接CompletableFuture<Integer>sendMessage(Convert convert, Object message0, boolean last, Stream<? extends Serializable> userids)向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接CompletableFuture<Integer>sendMessage(Convert convert, Object message0, boolean last, WebSocketUserAddress... useraddrs)向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接CompletableFuture<Integer>sendMessage(Convert convert, Object message, Serializable... useridOrAddrs)向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接CompletableFuture<Integer>sendMessage(Convert convert, Object message, Stream<? extends Serializable> useridOrAddrs)向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接protected CompletableFuture<Integer>sendOneAddrAction(WebSocketAddress addr, WebSocketAction action, Serializable... userids)protected CompletableFuture<Integer>sendOneAddrMessage(WebSocketAddress addr, Object message, boolean last, Serializable... userids)protected CompletableFuture<Integer>sendOneUserAction(WebSocketAction action, Serializable userid)protected CompletableFuture<Integer>sendOneUserMessage(Object message, boolean last, Serializable userid)protected booleantryAcquireSemaphore()protected Map<WebSocketAddress,List<Serializable>>userAddressToAddrMap(WebSocketUserAddress... useraddrs)protected Serializable[]userAddressToUserids(WebSocketUserAddress... useraddrs)
-
-
-
字段详细资料
-
WS_SOURCE_KEY_USERID_PREFIX
@Comment("\u5b58\u50a8\u7528\u6237ID\u7684key\u524d\u7f00") public static final String WS_SOURCE_KEY_USERID_PREFIX
- 另请参阅:
- 常量字段值
-
WS_SOURCE_KEY_NODES
@Comment("\u5b58\u50a8\u5f53\u524dSNCP\u8282\u70b9\u5217\u8868\u7684key") public static final String WS_SOURCE_KEY_NODES
- 另请参阅:
- 常量字段值
-
logger
protected final Logger logger
-
nodeid
protected String nodeid
-
localSncpAddress
protected InetSocketAddress localSncpAddress
-
wsNodeAddress
protected WebSocketAddress wsNodeAddress
-
name
protected String name
-
remoteNode
@RpcRemote protected WebSocketNode remoteNode
-
sendConvert
protected Convert sendConvert
-
source
protected CacheSource source
-
localEngine
protected WebSocketEngine localEngine
-
messageAgent
protected MessageAgent messageAgent
-
semaphore
protected Semaphore semaphore
-
-
方法详细资料
-
init
public void init(AnyValue conf)
从接口复制的说明:Service该方法必须是可以重复调用, 当reload时需要重复调用init方法 远程模式下该方法会重载成空方法
-
destroy
public void destroy(AnyValue conf)
从接口复制的说明:Service进程退出时,调用Service销毁 远程模式下该方法会重载成空方法 注意: 在此方法内不能调用MessageClient.sendMessage 方法,因为Application关闭时会先destroy掉MessageClient
-
getMessageAgent
@Local public final MessageAgent getMessageAgent()
-
getWebSocketAddresses
protected abstract CompletableFuture<List<String>> getWebSocketAddresses(@RpcTargetTopic String topic, @RpcTargetAddress InetSocketAddress targetAddress, Serializable userid)
-
sendMessage
protected abstract CompletableFuture<Integer> sendMessage(@RpcTargetTopic String topic, @RpcTargetAddress InetSocketAddress targetAddress, Object message, boolean last, Serializable... userids)
-
broadcastMessage
protected abstract CompletableFuture<Integer> broadcastMessage(@RpcTargetTopic String topic, @RpcTargetAddress InetSocketAddress targetAddress, WebSocketRange wsrange, Object message, boolean last)
-
sendAction
protected abstract CompletableFuture<Integer> sendAction(@RpcTargetTopic String topic, @RpcTargetAddress InetSocketAddress targetAddress, WebSocketAction action, Serializable... userids)
-
broadcastAction
protected abstract CompletableFuture<Integer> broadcastAction(@RpcTargetTopic String topic, @RpcTargetAddress InetSocketAddress targetAddress, WebSocketAction action)
-
getUserSize
protected abstract CompletableFuture<Integer> getUserSize(@RpcTargetTopic String topic, @RpcTargetAddress InetSocketAddress targetAddress)
-
connect
protected abstract CompletableFuture<Void> connect(Serializable userid, WebSocketAddress wsaddr)
-
disconnect
protected abstract CompletableFuture<Void> disconnect(Serializable userid, WebSocketAddress wsaddr)
-
changeUserid
protected abstract CompletableFuture<Void> changeUserid(Serializable fromuserid, Serializable touserid, WebSocketAddress wsaddr)
-
existsWebSocket
protected abstract CompletableFuture<Boolean> existsWebSocket(Serializable userid, @RpcTargetTopic String topic, @RpcTargetAddress InetSocketAddress targetAddress)
-
forceCloseWebSocket
protected abstract CompletableFuture<Integer> forceCloseWebSocket(Serializable userid, @RpcTargetTopic String topic, @RpcTargetAddress InetSocketAddress targetAddress)
-
getName
public final String getName()
-
remoteWebSocketAddresses
protected CompletableFuture<List<String>> remoteWebSocketAddresses(@RpcTargetTopic String topic, @RpcTargetAddress InetSocketAddress targetAddress, Serializable userid)
获取目标地址
该方法仅供内部调用- 参数:
topic- RpcTargetTopictargetAddress- InetSocketAddressuserid- Serializable- 返回:
- 客户端地址列表
-
getRpcNodeAddresses
public CompletableFuture<Set<WebSocketAddress>> getRpcNodeAddresses(Serializable userid)
获取用户在线的SNCP节点地址列表,不是分布式则返回元素数量为1,且元素值为null的列表
WebSocketAddress 为 SNCP节点地址- 参数:
userid- Serializable- 返回:
- 地址列表
-
getRpcNodeWebSocketAddresses
public CompletableFuture<Map<WebSocketAddress,List<String>>> getRpcNodeWebSocketAddresses(Serializable userid)
获取在线用户的详细连接信息
Map.key 为 SNCP节点地址, 含值为null的key表示没有分布式 Map.value 为 用户客户端的IP- 参数:
userid- Serializable- 返回:
- 地址集合
-
getUserSize
@Local public CompletableFuture<Integer> getUserSize()
获取在线用户总数- 返回:
- boolean
-
getUserSet
public CompletableFuture<Set<String>> getUserSet()
获取在线用户总数- 返回:
- boolean
-
existsWebSocket
@Local public CompletableFuture<Boolean> existsWebSocket(Serializable userid)
判断指定用户是否WebSocket在线- 参数:
userid- Serializable- 返回:
- boolean
-
existsWebSocket
@Local public CompletableFuture<Boolean> existsWebSocket(WebSocketUserAddress userAddress)
判断指定用户是否WebSocket在线- 参数:
userAddress- WebSocketUserAddress- 返回:
- boolean
-
forceCloseWebSocket
@Local public CompletableFuture<Integer> forceCloseWebSocket(Serializable userid)
强制关闭用户WebSocket- 参数:
userid- Serializable- 返回:
- int
-
forceCloseWebSocket
@Local public CompletableFuture<Integer> forceCloseWebSocket(WebSocketUserAddress userAddress)
强制关闭用户WebSocket- 参数:
userAddress- WebSocketUserAddress- 返回:
- int
-
getLocalWebSocketEngine
@Local public final WebSocketEngine getLocalWebSocketEngine()
获取本地的WebSocketEngine,没有则返回null- 返回:
- WebSocketEngine
-
sendMessage
@Local public final CompletableFuture<Integer> sendMessage(Object message, Stream<? extends Serializable> useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接- 参数:
message- 消息内容useridOrAddrs- Stream- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendMessage
@Local public final CompletableFuture<Integer> sendMessage(Object message, Serializable... useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接- 参数:
message- 消息内容useridOrAddrs- Serializable[]- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendMessage
@Local public final CompletableFuture<Integer> sendMessage(Convert convert, Object message, Stream<? extends Serializable> useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接- 参数:
convert- Convertmessage- 消息内容useridOrAddrs- Stream- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendMessage
@Local public final CompletableFuture<Integer> sendMessage(Convert convert, Object message, Serializable... useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接- 参数:
convert- Convertmessage- 消息内容useridOrAddrs- Serializable[]- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendMessage
@Local public final CompletableFuture<Integer> sendMessage(Object message, boolean last, Stream<? extends Serializable> useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接- 参数:
message- 消息内容last- 是否最后一条useridOrAddrs- Stream- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendMessage
@Local public final CompletableFuture<Integer> sendMessage(Object message, boolean last, Serializable... useridOrAddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接- 参数:
message- 消息内容last- 是否最后一条useridOrAddrs- Serializable[]- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendMessage
@Local public final CompletableFuture<Integer> sendMessage(Convert convert, Object message0, boolean last, Stream<? extends Serializable> userids)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接- 参数:
convert- Convertmessage0- 消息内容last- 是否最后一条userids- Stream- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendMessage
@Local public CompletableFuture<Integer> sendMessage(Convert convert, Object message0, boolean last, Serializable... userids)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接- 参数:
convert- Convertmessage0- 消息内容last- 是否最后一条userids- Serializable[]- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendMessage
@Local public CompletableFuture<Integer> sendMessage(Convert convert, Object message0, boolean last, WebSocketUserAddress... useraddrs)
向指定用户发送消息,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接- 参数:
convert- Convertmessage0- 消息内容last- 是否最后一条useraddrs- WebSocketUserAddress[]- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendOneUserMessage
protected CompletableFuture<Integer> sendOneUserMessage(Object message, boolean last, Serializable userid)
-
sendOneAddrMessage
protected CompletableFuture<Integer> sendOneAddrMessage(WebSocketAddress addr, Object message, boolean last, Serializable... userids)
-
userAddressToUserids
protected Serializable[] userAddressToUserids(WebSocketUserAddress... useraddrs)
-
userAddressToAddrMap
protected Map<WebSocketAddress,List<Serializable>> userAddressToAddrMap(WebSocketUserAddress... useraddrs)
-
broadcastMessage
@Local public final CompletableFuture<Integer> broadcastMessage(Object message)
广播消息, 给所有人发消息- 参数:
message- 消息内容- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
broadcastMessage
@Local public final CompletableFuture<Integer> broadcastMessage(WebSocketRange wsrange, Object message)
广播消息, 给所有人发消息- 参数:
wsrange- 过滤条件message- 消息内容- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
broadcastMessage
@Local public final CompletableFuture<Integer> broadcastMessage(Convert convert, Object message)
广播消息, 给所有人发消息- 参数:
convert- Convertmessage- 消息内容- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
broadcastMessage
@Local public final CompletableFuture<Integer> broadcastMessage(WebSocketRange wsrange, Convert convert, Object message)
广播消息, 给所有人发消息- 参数:
wsrange- 过滤条件convert- Convertmessage- 消息内容- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
broadcastMessage
@Local public final CompletableFuture<Integer> broadcastMessage(Object message, boolean last)
广播消息, 给所有人发消息- 参数:
message- 消息内容last- 是否最后一条- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
broadcastMessage
@Local public final CompletableFuture<Integer> broadcastMessage(WebSocketRange wsrange, Object message, boolean last)
广播消息, 给所有人发消息- 参数:
wsrange- 过滤条件message- 消息内容last- 是否最后一条- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
broadcastMessage
@Local public final CompletableFuture<Integer> broadcastMessage(Convert convert, Object message0, boolean last)
广播消息, 给所有人发消息- 参数:
convert- Convertmessage0- 消息内容last- 是否最后一条- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
broadcastMessage
@Local public CompletableFuture<Integer> broadcastMessage(WebSocketRange wsrange, Convert convert, Object message0, boolean last)
广播消息, 给所有人发消息- 参数:
wsrange- 过滤条件convert- Convertmessage0- 消息内容last- 是否最后一条- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
broadcastAction
@Local public CompletableFuture<Integer> broadcastAction(WebSocketAction action)
广播操作, 给所有人发操作- 参数:
action- 操作参数- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendAction
@Local public CompletableFuture<Integer> sendAction(WebSocketAction action, Serializable... userids)
向指定用户发送操作,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接- 参数:
action- 操作参数userids- Serializable[]- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendAction
@Local public CompletableFuture<Integer> sendAction(WebSocketAction action, WebSocketUserAddress... useraddrs)
向指定用户发送操作,先发送本地连接,再发送远程连接
如果当前WebSocketNode是远程模式,此方法只发送远程连接- 参数:
action- 操作参数useraddrs- WebSocketUserAddress[]- 返回:
- 为0表示成功, 其他值表示部分发送异常
-
sendOneUserAction
protected CompletableFuture<Integer> sendOneUserAction(WebSocketAction action, Serializable userid)
-
sendOneAddrAction
protected CompletableFuture<Integer> sendOneAddrAction(WebSocketAddress addr, WebSocketAction action, Serializable... userids)
-
tryAcquireSemaphore
protected boolean tryAcquireSemaphore()
-
releaseSemaphore
protected void releaseSemaphore()
-
-