webSocket 任务数更新提醒 jeecg
来源:互联网 发布:旅游分销平台源码 编辑:程序博客网 时间:2024/05/19 14:01
1.效果(当数据库变化时,更新任务数)
2.页面
3.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@page import="org.jeecgframework.web.system.pojo.base.TSUser" %><%@include file="/context/mytags.jsp"%><%@ page import="java.sql.*" %><!-- 获取登录用户信息 --><% TSUser u = (TSUser) session.getAttribute("LOCAL_CLINET_USER"); System.out.println(u.getUserName()+";id="+u.getId()+";"+u.getCurrentDepart().getId());%> <!-- 【首页提醒】我的任务 --><li class="dropdown hidden-xs"> <a href="javascript:addOneTab('我的任务', 'tSTaskController.do?goTaskListTab', 'default');"> <i class="fa fa-bell" style="color:#EE6B6B"></i> 待办(<span id="view"></span>)</a> </li>
3.1 js
<script type="text/javascript"> //先检验能不能运行起来,能不能连上,自动推送数据,先不做数据显示 //客户端就会与服务器进行连接 //ws://localhost:8080/jeecg/websocket/1/2 ; (1,2 是传递的参数) var webSocket = new WebSocket("ws://localhost:8080/jeecg/websocket/<%=u.getId() %>/<%=u.getCurrentDepart().getId() %>"); //这里只是调试用 //连接失败时回调 webSocket.onerror = function (event) { makeDataOnWeb("0"); //makeDataOnWeb("error"); }; //这里只是调试用 //连接成功时回调 webSocket.onopen = function (event) { makeDataOnWeb("0"); //console.log("conn success"); //makeDataOnWeb("conn success"); }; webSocket.onmessage = function (event) { makeDataOnWeb(event.data); }; //这里只是调试用 webSocket.onclose = function (event) { // makeDataOnWeb("0"); makeDataOnWeb("conn close"); }; function makeDataOnWeb(data) {//alert("data="+data); document.getElementById("view").innerHTML=data; }; </script>
3.2 后台代码
import java.io.IOException;import java.util.List;import java.util.Map;import javax.websocket.OnClose;import javax.websocket.OnError;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.PathParam;import javax.websocket.server.ServerEndpoint;import org.apache.log4j.Logger;import org.hibernate.annotations.Where;@ServerEndpoint("/websocket/{uId}/{dpId}")public class websocket {private static final Logger logger = Logger.getLogger(websocket.class);private int currentIndex;private SystemService systemService; //调取的其他类private CommonService commonService; //调取的其他类private String uid;private String dpId;@OnOpenpublic void onOpen(@PathParam("uId") String uId,@PathParam("dpId") String dpId,Session session) { //调取的其他类ApplicationContext ctx = ApplicationContextUtil.getContext(); if (ctx.containsBean("systemService")) { this.systemService = ((SystemService)ctx.getBean("systemService")); } if (ctx.containsBean("commonService")) { this.commonService = ((CommonService)ctx.getBean("commonService"));} while (true) { currentIndex=0; //这之间写业务代码 查数据库.........// System.out.println( "待办任务="+currentIndex); try {ession.getBasicRemote().sendText(String.valueOf(currentIndex));} catch (IOException e1) {e1.printStackTrace();} try { //一秒刷新一次 Thread.sleep(1000*60); } catch (InterruptedException e) { e.printStackTrace(); } } } @OnClose public void onClose() { logger.info("有一连接关闭! " ); } @OnError public void onError(Session session, Throwable error) { logger.info("发生错误"); error.printStackTrace(); }
2,ajax 实现
//alert("//加载消息");
//alert("//加载消息");function getTaskCount(){// 待办 加载消息 var url = "tSTaskController.do?getTaskMessageCount"; $.ajax({ url:url, type:"GET", dataType:"JSON", async: false, success:function(data){ if(data.success){ var messageCount = data.obj; //alert("待办 加载消息"); $("#taskCount").html(messageCount); } } }); }// 重复执行某个方法 window.setInterval("getTaskCount()",1000*60*5); // 去掉定时器的方法 window.clearInterval(t1); $(document).ready(function(){//------------------------------------------------------------ // alert("待办 加载消息");// 待办 加载消息 getTaskCount(); }); //------------------------------------------------------------
//------------------------------------------------------------
/** * 首页取得任务的消息 * * @param user * @param req * @return */@RequestMapping(params = "getTaskMessageCount")@ResponseBodypublic AjaxJson getNoticeList(HttpServletRequest req) {Integer cont = 0;AjaxJson j = new AjaxJson();j.setObj(0);if(userRoleId.equals("402881e75f1f2471015f206d63e60015")){ String qsql = "select t.c_taskid,t.c_taskname,t.c_assignee,t.c_workflowid,t.c_instanceid,t.c_createtime,t.c_taskstate,t.c_resourceid,r.c_spreadsheetid,r.c_otherparams from t_ext_workflow_task t LEFT JOIN t_ext_workflow_resource r on t.c_resourceid =r.c_resourceid where t.c_taskstate='unfinished' AND t.c_assignee like '%"+ userRoleId + "%' "; List<Map<String, Object>> taskList = DynamicDBUtil.findList("SAP_DB", qsql); if (null != taskList && !taskList.isEmpty()) {cont += taskList.size(); } }j.setObj(cont);return j;}
同时也参考文章 http://blog.csdn.net/Nougats/article/details/75305370
http://blog.csdn.net/u014175572/article/details/46693121
阅读全文
0 0
- webSocket 任务数更新提醒 jeecg
- jeecg集成实现websocket
- JEECG 版本更新日志
- Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等
- Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等
- Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等
- Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等
- Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等
- Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等
- Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等
- Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等
- vb任务提醒
- JEECG v3视频陆续更新
- 创建数据库存储过程每天计划任务更新前台数据字段是否到期提醒
- 【JEECG技术博文】jeecg 定时任务配置用法
- javaWeb 系统维护更新提醒!
- App Version更新提醒
- app版本更新, 提醒
- 听见丨今年全球全功能智能手表出货3160万部,2021年翻番 华为与百度达成全面战略合作,AI结合手机或将成未来趋势
- BZOJ 1013 球形空间产生器sphere(高斯消元)
- nginx支持websocket及websocket部分原理介绍
- DSP Review
- 截取两个字符串中的字符串
- webSocket 任务数更新提醒 jeecg
- Java高并发之从零到放弃
- hibernate调用存储过程获取数据要点
- JAVA面试——程序基础篇
- 营销运营人员的自我修炼——系列三(终篇)
- Mac配置JDK环境变量
- 百帮忙飞人端隐私政策
- Spring4.0 RestController Rest风格请求参数详解
- C++ 二叉树的基本操作