当前位置: 首页 > news >正文

福建住房和建设网站wordpress淘宝客插件破解版

福建住房和建设网站,wordpress淘宝客插件破解版,app运营推广是干什么,垂直购物网站建设Tio-Boot 集成 Spring Boot 实现即时通讯功能全解析(详细版) 一、Tio-Boot 简介 Tio-Boot 是基于 Tio 框架的 Spring Boot Starter 扩展,提供高性能、低延迟的网络通信能力,支持 TCP/UDP 协议及 WebSocket 协议,适用…

Tio-Boot 集成 Spring Boot 实现即时通讯功能全解析(详细版)

一、Tio-Boot 简介

Tio-Boot 是基于 Tio 框架的 Spring Boot Starter 扩展,提供高性能、低延迟的网络通信能力,支持 TCP/UDP 协议及 WebSocket 协议,适用于即时通讯、物联网等场景。其核心优势包括:

  • 高性能:基于 Java NIO 实现非阻塞通信
  • 易扩展:支持自定义协议和集群扩展
  • 简化配置:通过自动配置减少冗余代码

二、项目启动配置

1. 添加依赖

pom.xml 中引入 Tio-Boot 依赖(版本 3.6.0.v20200315-RELEASE):

<dependencies><dependency><groupId>org.tio</groupId><artifactId>tio-core-spring-boot-starter</artifactId><version>3.6.0.v20200315-RELEASE</version></dependency><dependency><groupId>org.tio</groupId><artifactId>tio-websocket-spring-boot-starter</artifactId><version>3.6.0.v20200315-RELEASE</version></dependency>
</dependencies>

2. 配置文件 application.yml

server:port: 8080tio:websocket:server:ip: 127.0.0.1heartbeat-timeout: 600000

3. 启动类配置

在 Spring Boot 主类添加 @EnableTioWebSocketServer 注解:

@SpringBootApplication
@EnableTioWebSocketServer
public class TioChatApplication {public static void main(String[] args) {SpringApplication.run(TioChatApplication.class, args);}
}
@Configuration
public class TioManualConfig {@Value("${tio.websocket.server.port:9326}")private int websocketPort;@Bean(initMethod = "start")public WsServerStarter wsServerStarter() throws IOException {return new WsServerStarter(websocketPort, new TioWebSocket());}
}

三、核心功能实现

1. 消息处理器(Handler)

创建 ChatServerAioHandler 处理消息收发:

@Component
@TioWebSocketMsgHandler
public class ChatServerAioHandler implements IWsMsgHandler {private static final String CHARSET = "UTF-8";@Overridepublic HttpResponse handshake(HttpRequest httpRequest, HttpResponse httpResponse, ChannelContext channelContext) {String userId = httpRequest.getParam("uid");if (StrUtil.isBlank(userId)) {httpResponse.setStatus(HttpResponseStatus.C401);return httpResponse;}// 绑定用户到默认群组Tio.bindGroup(channelContext, "default_group");Tio.bindUser(channelContext, userId);return httpResponse;}@Overridepublic void onAfterHandshaked(HttpRequest httpRequest, HttpResponse httpResponse, ChannelContext channelContext) {System.out.println("用户 " + channelContext.getToken() + " 已连接");}@Overridepublic Object onText(WsRequest wsRequest, String message, ChannelContext channelContext) {System.out.println("收到消息: " + message);JSONObject json = JSON.parseObject(message);String type = json.getString("type");String content = json.getString("content");String target = json.getString("target");if ("private".equals(type)) {// 私聊逻辑ChannelContext targetContext = Tio.getChannelContextByToken(channelContext.getGroupContext(), target);if (targetContext != null) {Tio.send(targetContext, content.getBytes(CHARSET));}} else if ("group".equals(type)) {// 群聊逻辑Tio.sendToGroup(channelContext, "default_group", content.getBytes(CHARSET));} else if ("group_custom".equals(type)) {// 组聊逻辑(自定义群组)String groupId = json.getString("groupId");Tio.sendToGroup(channelContext, groupId, content.getBytes(CHARSET));}return null;}@Overridepublic void onClose(WsRequest wsRequest, byte[] bytes, ChannelContext channelContext) {String userId = Tio.getUserContext(channelContext).getToken();System.out.println("用户 " + userId + " 已断开");Tio.unbindUser(channelContext, userId);Tio.unbindGroup(channelContext, "default_group");}
}

2. 用户与群组管理

@Component
public class UserService {private static final Map<String, ChannelContext> USER_MAP = new ConcurrentHashMap<>();public void bindUser(ChannelContext channelContext, String userId) {USER_MAP.put(userId, channelContext);}public void unbindUser(String userId) {ChannelContext context = USER_MAP.remove(userId);if (context != null) {Tio.close(context);}}public ChannelContext getUserContext(String userId) {return USER_MAP.get(userId);}
}

3. 组聊扩展(高级功能)

@Component
public class GroupService {private static final Map<String, Set<ChannelContext>> GROUP_MAP = new ConcurrentHashMap<>();public void joinGroup(ChannelContext context, String groupId) {GROUP_MAP.computeIfAbsent(groupId, k -> ConcurrentHashMap.newKeySet()).add(context);}public void leaveGroup(ChannelContext context, String groupId) {GROUP_MAP.getOrDefault(groupId, Collections.emptySet()).remove(context);}public void sendToGroup(String groupId, byte[] message) {GROUP_MAP.getOrDefault(groupId, Collections.emptySet()).forEach(ctx -> {try {ctx.writeAndFlush(new String(message, CHARSET));} catch (Exception e) {e.printStackTrace();}});}
}

四、测试与验证

1. 启动服务

运行 TioChatApplication,控制台输出:

TioWebSocketServer 启动成功,监听端口:8081

2. 客户端连接

使用 WebSocket 客户端连接 ws://localhost:8081,发送测试消息:

{"type": "private","target": "user123","content": "Hello Tio!"
}

3. 验证功能

  • 私聊:指定 typeprivatetarget 为目标用户 ID
  • 群聊:发送消息时指定 typegroup
  • 组聊:发送消息时指定 typegroup_custom 并携带 groupId 字段

Tio可以更好的拓展websocket,更方便的实现私聊,组聊和群聊的功能,其内部封装好了许多方法,详细可以查看官方文档

http://www.dtcms.com/a/514671.html

相关文章:

  • 怎样建立自己网站上海网站建设服务是什么意思
  • 移动端网站怎么做seo外包平台
  • 陈铭生我来找你了seo推广优化外包公司
  • 做网站找毛叶子歌wordpress网站怎么设置关键词
  • 漯河网做网站重庆微信网站制作专家
  • ip代理提取网站源码网站seo怎么做的
  • 建设内容管理网站的目的网站诊断表
  • 培训教育的网站怎么做温州公司做网站
  • 云建站龙岗公司网站
  • 广州站改造最新消息淄博软件开发公司有哪些
  • 廊坊网站建设廊坊网络公司驻梦天长街道两学一做网站
  • 小清新个人网站WordPress xml 收录
  • 旅游景点网站设计c 怎么做能让窗体访问网站
  • 河南工程招标网站加密软件代理
  • semcms外贸网站管理系统网络广告策划流程有哪些?
  • 前端开发学习网站丹东新区建设发展集团网站
  • 米拓企业网站管理系统wordpress锚文本插件
  • 网站设计与开发期末考试题php开发网站
  • 莱芜信息港莱芜在线seo收费还是免费
  • 电子商务网站开发实存内容目前比较火的电商平台有哪些
  • 网站建网站建设seo帮帮您霍山做网站
  • 曲靖网站微信建设大连高新园区住建局官网
  • 没有建网站怎样做网销室内设计学校推荐
  • 推广qq群的网站无法连接到wordpress
  • 微信网站建设咨询海南省建设局网站搜索
  • 公司做网站推广百度和阿里巴巴2021最新引流推广方法
  • 个人网站可备案企业知识库wordpress
  • 网站开发 嘉定h5自适应网站源码
  • 上海做网站比较有名的公司下载站模板 wordpress
  • 广州做网站网络公司怎么做足球直播网站