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

网站设计网网站seo优化推推蛙

网站设计网,网站seo优化推推蛙,区块链,用云空间制作网站提示#xff1a;写完文章后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、数据库设计二、实现代码1.SessionWrap2.websocket3.insertMessage4.清除未读 前言 使用WebSocket实现一对一的聊天功能与未读消息功能 一、数据库设计 会话…提示写完文章后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言一、数据库设计二、实现代码1.SessionWrap2.websocket3.insertMessage4.清除未读 前言 使用WebSocket实现一对一的聊天功能与未读消息功能 一、数据库设计 会话表 字段名字段类型长度注释conversation_idint11会话IDcreate_timedatetime创建时间conversation_typeint1会话类型 消息表 字段名字段类型长度注释message_idint11消息IDconversation_idint11会话IDsender_idint11发送者IDreceiver_idin t11接收者IDcontenttext消息内容typeint2消息类型informationvarchar255信息sender_imgint11发送者头像IDreceiver_imgint11接收者头像IDmessage_statusint1消息状态1已读0未读create_timedatetime创建时间 二、实现代码 1.SessionWrap Data public class SessionWrap {private String from; // 连接人idprivate String type; // 连接类型private Session session;private Date lastTime; }2.websocket Component ServerEndpoint(value /api/websocket/{from}/{type}) public class WebSocketServer {Autowiredprivate RqriMessageService rqriMessageService;public static WebSocketServer webSocketServer;// 所有的连接会话private static CopyOnWriteArraySetSessionWrap sessionList new CopyOnWriteArraySet();private String from;private String type;PostConstructpublic void init() {webSocketServer this;webSocketServer.rqriMessageService this.rqriMessageService;}OnOpenpublic void onOpen(Session session, PathParam(value from) String from, PathParam(value type) String type) {this.from from;this.type type;try {// 遍历list如果有会话更新如果没有创建一个新的for (SessionWrap item : sessionList) {if (item.getFrom().equals(from) item.getType().equals(type)) {item.setSession(session);item.setLastTime(new Date());log.info(【websocket消息】更新连接总数为: sessionList.size());return;}}SessionWrap sessionWrap new SessionWrap();sessionWrap.setFrom(from);sessionWrap.setType(type);sessionWrap.setSession(session);sessionWrap.setLastTime(new Date());sessionList.add(sessionWrap);log.info(【websocket消息】有新的连接总数为: sessionList.size());} catch (Exception e) {log.info(【websocket消息】连接失败错误信息 e.getMessage());}}OnClosepublic void onClose() {try {sessionList.removeIf(item - item.getFrom().equals(from) item.getType().equals(type));log.info(【websocket消息】连接断开总数为: sessionList.size());} catch (Exception e) {log.info(【websocket消息】连接断开失败错误信息 e.getMessage());}}OnMessagepublic void onMessage(String message, Session session) {try {if (ping.equals(message)) {session.getBasicRemote().sendText(ping); // 心跳检测} else {// 将消息插入到数据库JSONObject r webSocketServer.rqriMessageService.insertMessage(message);// 成功if (r.getInteger(code) 200) {JSONObject data r.getJSONObject(data);String senderId data.getString(senderId); // 发送者String receiverId data.getString(receiverId); // 接收者for (SessionWrap item : sessionList) {if (senderId.equals(item.getFrom()) || receiverId.equals(item.getFrom()) ) {item.getSession().getBasicRemote().sendText(r.toJSONString());} }log.info(【websocket消息】发送消息: r.toJSONString());}}} catch (Exception e) {log.info(【websocket消息】发送消息失败错误信息 e.getMessage());}}OnErrorpublic void onError(Session session, Throwable error) {log.error(用户错误,原因:error.getMessage());error.printStackTrace();}} 3.insertMessage private final String rqriMessageStr rqri_message_unread_;public JSONObject insertMessage(String message) {JSONObject jsonObject new JSONObject();RqriMessage rqriMessage JSONObject.parseObject(message, RqriMessage.class);// 把消息添加到数据库int i rqriMessageMapper.insertSelective(rqriMessage);// 将未读信息添加到redis 添加接收者的未读String conversationId String.valueOf(rqriMessage.getConversationId());String receiverId String.valueOf(rqriMessage.getReceiverId());String key rqriMessageStr conversationId _ receiverId;if (redisUtils.get(key) null) {redisUtils.set(key, 1, 0); // 设置永不过期} else {redisUtils.incr(key, 1); // 未读数量添加1}jsonObject.put(code, 200);jsonObject.put(data, rqriMessage);// 发送者的id和未读数量返回给前端渲染到页面HashMapString, Integer map new HashMap();map.put(num, Integer.valueOf(redisUtils.get(key).toString()));map.put(id, rqriMessage.getSenderId());jsonObject.put(isread, map);return jsonObject; }4.清除未读 最后在进入聊天页面和退出聊天页面时把未读数量清零。
http://www.hkea.cn/news/14364476/

相关文章:

  • 网站首页的动态视频怎么做的申请163邮箱注册
  • 上海网站建设服务商襄垣网站建设
  • 金光华网站建设免费的代理服务器
  • 黑龙江恒泰建设集团网站网页版米游社
  • 四川省建设厅消防网站网站管理端怎么做
  • 信誉好的扬中网站建设在线图片编辑器软件
  • flash打开网站源码自己公司怎样做免费的网站
  • 福建泉州做淘宝的拿货什么网站网站是怎么制作的
  • 大连投诉网站江苏省工程建设信息网
  • 建站工具有哪些论坛洛阳制作网站的公司哪家好
  • 2018网站建设网站建设哪几家好一些
  • 网站建设与维护 前台做营销型网站的企业
  • 郓城网站建设网址查询服务器地址
  • iis 多网站安全设置wordpress与thinkphp
  • 简易网站模板wordpress首页缓慢
  • 天津市北辰区建设与管理局网站广告投放平台
  • 生鲜电商网站开发网站 html5
  • 工信部网站原来是下载app免费下载app
  • 婚庆网站建设公司400电话网站源码
  • 天元建设集团有限公司建设租赁分公司武夷山网站建设wzjseo
  • 个人网站建设心得体会wordpress 3.3.1漏洞
  • html5做网站心得体会推荐几个响应式网站做参考
  • tp5第二季企业网站开发auth权限认证商城网站开发项目分工
  • 做空间的网站网站显示速度的代码是什么情况
  • 免费招聘网站平台有哪些企业网站开发 语言 收录
  • 广告 网站举例做外贸的阿里巴巴网站是哪个更好
  • div布局在线音乐网站设计社交网站 ui
  • 菏泽网站建设价位不用囤货
  • 如何进行网站推广电商网站项目建设
  • 巴中模板建站价格多少网站建设时如何调用qq微信