- 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 WebSocketEngine
localEngine
protected InetSocketAddress
localSncpAddress
protected Logger
logger
protected MessageAgent
messageAgent
protected String
name
protected String
nodeid
protected WebSocketNode
remoteNode
protected Semaphore
semaphore
protected Convert
sendConvert
protected CacheSource
source
static String
WS_SOURCE_KEY_NODES
static String
WS_SOURCE_KEY_USERID_PREFIX
protected WebSocketAddress
wsNodeAddress
-
构造器概要
构造器 构造器 说明 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)
void
destroy(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 Object
formatRemoteMessage(Object message)
WebSocketEngine
getLocalWebSocketEngine()
获取本地的WebSocketEngine,没有则返回nullMessageAgent
getMessageAgent()
String
getName()
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 为 用户客户端的IPSemaphore
getSemaphore()
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)
void
init(AnyValue conf)
该方法必须是可以重复调用, 当reload时需要重复调用init方法 远程模式下该方法会重载成空方法protected void
postDestroy(AnyValue conf)
protected void
releaseSemaphore()
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 boolean
tryAcquireSemaphore()
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()
-
-