allbs工具类说明 - websocket
依赖jar包
引入包 | 版本 |
---|---|
jdk | 1.8 |
spring boot | 2.7.2 |
spring-boot-starter-websocket | 2.7.2 |
allbs-common | 1.1.6 |
使用
添加依赖
<dependency>
<groupId>cn.allbs</groupId>
<artifactId>allbs-websocket</artifactId>
<version>1.1.8</version>
</dependency>
implementation 'cn.allbs:allbs-websocket:1.1.8'
implementation("cn.allbs:allbs-websocket:1.1.8")
重写权限认证模块(必须)
@Component
public class AllbsAuthHandler extends AuthMessageHandler {
@Override
public void execute(WebSocketSession session, AuthRequest message) {
// 如果未传递 accessToken
if (!StrUtil.isAllNotEmpty(message.getAccessToken(), message.getUserName())) {
WebSocketUtil.send(session, "401",
AuthResponse.builder().content(StrUtil.format("参数{}为必传参数", "userName")).build());
throw new MessageHandlerException("缺少必要参数userName!");
}
// 添加到 WebSocketUtil 中
WebSocketUtil.addSession(session, message.getUserName());
// 判断是否认证成功。
WebSocketUtil.send(session, "200", AuthResponse.builder().content("连接成功").build());
}
}
前端发送的消息需要自定义处理
@Slf4j
@Component
public class AllbsSysDefaultHandler extends SysDefaultHandler {
@Override
public void execute(WebSocketSession session, SysDefaultRequest message) {
log.info("接收消息内容为:" + message);
// 回复消息
SysDefaultRequest defa = SysDefaultRequest.builder().content("消息放松成功").build();
WebSocketUtil.send("1", "200", defa);
}
}
前端可发送的json内容
获取在线用户数量
{
"type": "TOTAL_USER_COUNT"
}
获取所有在线用户userName
{
"type": "ONLINE_USER_NAME_LIST"
}
客户端发送给所有人消息
{
"type": "SEND_TO_ALL_REQUEST",
"content": "群发消息内容"
}
发送消息给指定的用户
{
"type": "SEND_TO_ONE_REQUEST",
"toUserName": "1",
"content": "这是单独发送的消息内容"
}
后端主动推送消息给所有用户
WebsocketUtil.broadcast(WebSocketResponseEnum webSocketResponseEnum, T data)
后端主动推送消息给所有用户方式二
WebsocketUtil.broadcast(String code, String msg, T data)
后端主动推送消息给所有用户(除自己)
WebsocketUtil.broadcastWithoutSelf(WebSocketResponseEnum webSocketResponseEnum, T data, String userName)
后端主动推送消息给所有用户(除自己)方式二
WebsocketUtil.broadcastWithoutSelf(String code, String msg, T data, String userName)
发送消息给指定用户
WebsocketUtil.send(String userName, String code, String msg, T data)
发送消息给指定用户方式二
WebsocketUtil.send(String userName, WebSocketResponseEnum webSocketResponseEnum, T data)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ALLBS!
评论