首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

微信小程序+springboot及时聊天(通讯)代码

后端 23.4KB 13 需要积分: 1
立即下载

资源介绍:

1.微信小程序ws通讯 2.后端使用springboot的websocket
package com.example.mengchuangyuan.common.chat.mini.mapper; import com.alibaba.fastjson.JSON; import com.example.mengchuangyuan.common.redis.mapper.RedisUtils; import com.example.mengchuangyuan.common.redis.tool.SufferVariable; import com.example.mengchuangyuan.common.tool.DateYMDms; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import javax.websocket.Session; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @Component @Slf4j public class SessionPool { @Autowired private RedisUtils redisUtils; //key-value : userId - 会话(系统创建) public static Map sessions = new ConcurrentHashMap<>();//避免多线程问题 public void close(String sessionId) { //sessionId是在session中添加了一个标识,准确定位某条session for (String userId : SessionPool.sessions.keySet()) { Session session = SessionPool.sessions.get(userId); if (session.getId().equals(sessionId)) { sessions.remove(userId); break; } } } public void sendMessage(String userId, String message) { sessions.get(userId).getAsyncRemote().sendText(message); } //消息的群发,业务逻辑的群发 public void sendMessage(String message) { // redisUtils.cacheValue("chatMessage","String.valueOf(SufferVariable.messageMap)"); for (String sessionId : SessionPool.sessions.keySet()) { SessionPool.sessions.get(sessionId).getAsyncRemote().sendText(message); } } //点对点的消息推送 public void sendMessage(Map params) { log.info("消息内容:"+String.valueOf(params)); long mid = System.currentTimeMillis(); Map formUser = (Map) params.get("formUser"); Map toUser = (Map) params.get("toUser"); String userId = formUser.get("openid").toString(); String toUserId = toUser.get("openid").toString(); // String msg = params.get("message").toString(); String type = params.get("type").toString(); String linkType = params.get("linkType").toString(); //获取用户session Session session = sessions.get(toUserId); Map keyMap; List setOpenid; Map map; List list; String uid = userId+toUserId; params.put("mid",mid); if (SufferVariable.messageMap.get(userId+toUserId)==null&&SufferVariable.messageMap.get(toUserId+userId)==null){ // messageMap.put(userId+toUserId,userId+toUserId); map = new HashMap<>(); list = new ArrayList<>(); map.put(linkType,list); SufferVariable.messageMap.put(uid,map); // list.add(params); }else { if (SufferVariable.messageMap.get(userId+toUserId)!=null){ uid = userId+toUserId; }else { uid = toUserId+userId; } map = (Map) SufferVariable.messageMap.get(uid); list = (List) map.get(linkType); } //获取历史记录 if (type.equalsIgnoreCase("history")){ if (sessions.get(userId) != null) { Map map2 = new HashMap<>(); // map = (Map) SufferVariable.messageMap.get(uid); map2.put("type", "isHistory"); map2.put("message",list); sessions.get(userId).getAsyncRemote().sendText(JSON.toJSONString(map2)); } return; } String nowDate = DateYMDms.getUtilDate(); if (list.size()!=0) { Map lastMap = (Map) list.get(list.size() - 1); String date = DateYMDms.getYMDms(5, lastMap.get("nowDate").toString()); params.put("date", date); }else { params.put("date", nowDate); } // if (SufferVariable.openidKeys.get(linkType)==null){ // keyMap = new HashMap<>(); // }else { // keyMap = (Map) SufferVariable.openidKeys.get(linkType); // } // if (keyMap.get(userId)==null){ // setOpenid = new ArrayList<>(); // }else { // log.info(String.valueOf(SufferVariable.openidKeys)); // setOpenid = (List) keyMap.get(userId); // } if (SufferVariable.openidKeys.get(linkType) == null){ setOpenid = new ArrayList<>(); }else { setOpenid = (List) SufferVariable.openidKeys.get(linkType); } setOpenid.add(uid); Set set = new LinkedHashSet<>(setOpenid); setOpenid.clear(); setOpenid.addAll(set); // keyMap.put(userId,setOpenid); SufferVariable.openidKeys.put(linkType,setOpenid); params.put("nowDate",nowDate); list.add(params); map.put(linkType,list); SufferVariable.messageMap.put(uid,map); redisUtils.cacheValue("chatMessage",SufferVariable.messageMap); redisUtils.cacheValue("chatOpenidKeys",SufferVariable.openidKeys); if (session != null) { log.info(uid+":"+String.valueOf(SufferVariable.messageMap.get(uid))); session.getAsyncRemote().sendText(JSON.toJSONString(params)); } // log.info(String.valueOf(messageMap)); // params.remove("formUserId"); //session不为空的情况下进行点对点推送 } }

资源文件列表:

chatcode.zip 大约有40个文件
  1. chatcode/
  2. chatcode/springboot/
  3. chatcode/springboot/chat/
  4. chatcode/springboot/chat/config/
  5. chatcode/springboot/chat/config/WebSocketConfig.java 1.15KB
  6. chatcode/springboot/chat/controller/
  7. chatcode/springboot/chat/controller/ChatController.java 2.22KB
  8. chatcode/springboot/chat/entry/
  9. chatcode/springboot/chat/entry/ChatMessage.java 242B
  10. chatcode/springboot/chat/mini/
  11. chatcode/springboot/chat/mini/config/
  12. chatcode/springboot/chat/mini/config/MiniWebSocketConfig.java 440B
  13. chatcode/springboot/chat/mini/controller/
  14. chatcode/springboot/chat/mini/controller/MiniWebSocketController.java 2.81KB
  15. chatcode/springboot/chat/mini/mapper/
  16. chatcode/springboot/chat/mini/mapper/SessionPool.java 5.79KB
  17. chatcode/springboot/chat/mini/mapper/WebSocketEndPoint.java 2.84KB
  18. chatcode/springboot/constans/
  19. chatcode/springboot/constans/Constans.java 312B
  20. chatcode/springboot/redis/
  21. chatcode/springboot/redis/config/
  22. chatcode/springboot/redis/config/RedisConfig.java 1.75KB
  23. chatcode/springboot/redis/mapper/
  24. chatcode/springboot/redis/mapper/RedisUtils.java 3.62KB
  25. chatcode/springboot/redis/tool/
  26. chatcode/springboot/redis/tool/SufferVariable.java 584B
  27. chatcode/springboot/tool/
  28. chatcode/springboot/tool/Result.java 1.04KB
  29. chatcode/wx_mini_code/
  30. chatcode/wx_mini_code/chat/
  31. chatcode/wx_mini_code/chat/chat.js 10.19KB
  32. chatcode/wx_mini_code/chat/chat.json 31B
  33. chatcode/wx_mini_code/chat/chat.wxml 4.83KB
  34. chatcode/wx_mini_code/chat/chat.wxss 7.41KB
  35. chatcode/wx_mini_code/rpromise/
  36. chatcode/wx_mini_code/rpromise/request.js 703B
  37. chatcode/wx_mini_code/rpromise/uploadfile.js 787B
  38. chatcode/wx_mini_code/tool/
  39. chatcode/wx_mini_code/tool/form/
  40. chatcode/wx_mini_code/tool/form/form.js 5.4KB
0评论
提交 加载更多评论
其他资源 VXLAN手动隧道 集中式网关,不同子网互访
VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不同子网互访。VXLAN手动隧道 集中式网关,不
地下偶像有声01.zip
地下偶像有声01.zip
知识图谱作业代码,包含数据预处理与转换、模型训练、结果评估等
知识图谱作业代码,包含数据预处理与转换、模型训练、结果评估等
免费下载Springboot驾校预约管理系统
系统概述: 驾校预约管理系统是一套集学员管理、教练管理、课程预约、考试安排等功能于一体的信息化解决方案。系统采用Spring Boot框架进行后端开发,利用其自动配置、内嵌服务器等特性,确保了系统的高性能与快速响应。 关键技术: Spring Boot:简化了传统Spring应用的配置,提供了丰富的自动配置选项。 MyBatis Plus:增强了MyBatis的功能,简化了数据库操作。 JWT:用于实现无状态、安全的认证机制。 Vue.js:作为前端框架,提供了丰富的组件和高效的数据绑定,优化了用户界面的交互性。 核心功能模块: 学员管理:系统支持学员信息的录入、修改和查询,以及学员状态的跟踪。 教练管理:教练信息管理,包括教练的排班和工作评价。 课程预约:学员可通过系统预约练车时间,系统自动处理预约冲突。 考试管理:管理学员的考试安排,记录考试成绩。 报表统计:系统自动生成教练工作量、学员通过率等统计报表。 安全性: 系统采用JWT进行用户认证,确保了数据传输的安全性和用户操作的合法性。同时,系统提供了角色权限管理,确保不同角色的访问权限得到有效控制。
MPU6050测角度卡尔曼滤波算法
内容概要:使用卡尔曼滤波算法整合MPU6050加速度计和陀螺仪数据,实现测量MPU6050旋转角度的目的,该项目使用c语言编写 适合人群:想要使用MPU6050测量角度的人群或者想要学习和使用卡尔曼滤波算法的人群 能学到什么:卡尔曼滤波算法的实际应用以及MPU6050传感器的数据读取 阅读建议:需要有一定的卡尔曼滤波算法的公式基础
wifi-crack-tool-main 安装包
安装包
vue前端下载打印PDF源码.zip
vue前端下载打印PDF源码
vue前端下载打印PDF源码.zip vue前端下载打印PDF源码.zip vue前端下载打印PDF源码.zip
基于JAVA的网上服装商城(Vue.js+SpringBoot+MySQL)
基于Vue.js和SpringBoot的网上服装商城是一个功能齐全、易于使用的电子商务平台,它分为用户前台和管理后台两个部分,以满足不同用户角色的需求。用户前台主要面向普通用户,提供浏览、搜索、购买等功能,让用户可以方便地挑选和购买心仪的服装。管理后台则为管理员提供了强大的管理功能,包括服装管理模块,可以添加、编辑、删除服装信息;公告信息模块,用于发布商城公告和通知;服装类型模块,用于分类管理不同类型的服装;以及用户管理模块,可以查看和管理用户信息。整个商城采用现代化的前端技术Vue.js和后端框架SpringBoot,保证了系统的高性能和稳定性,为用户提供了流畅的购物体验和高效的管理操作。 演示录屏:https://www.bilibili.com/video/BV1Aw4m1v7fY 配套教程:https://www.bilibili.com/video/BV1pW4y1P7GR
基于JAVA的网上服装商城(Vue.js+SpringBoot+MySQL) 基于JAVA的网上服装商城(Vue.js+SpringBoot+MySQL) 基于JAVA的网上服装商城(Vue.js+SpringBoot+MySQL)