JS实现websocket长轮询实时消息提示的效果


Posted in Javascript onOctober 10, 2017

效果图如下:

JS实现websocket长轮询实时消息提示的效果

参考代码如下:

jsp代码:

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<div class="page-header navbar navbar-fixed-top">
  <div class="page-header-inner">
    <div class="page-logo">
      <a href="<c:url value=" rel="external nofollow" rel="external nofollow" /"/>"><img
        src="<c:url value="/img/logo.png"/>" style="height: 14px" alt="logo"
        class="logo-default" /></a>
      <div class="menu-toggler sidebar-toggler hide"></div>
    </div>
    <a href="javascript:;" rel="external nofollow" rel="external nofollow" class="menu-toggler responsive-toggler"
      data-toggle="collapse" data-target=".navbar-collapse"></a>
    <div class="top-menu">
      <ul class="nav navbar-nav pull-right">
        <li class="dropdown dropdown-alert"><a href="#" rel="external nofollow" rel="external nofollow" 
          class="dropdown-toggle" data-toggle="dropdown"
          data-hover="dropdown" data-close-others="true"> <span
            class="badge pull-left"></span><label class="hidden-sm">报警</label><i
            class="fa fa-bell"></i>
        </a>
          <ul class="dropdown-menu">
          </ul></li>
        <li class="dropdown dropdown-user"><a href="#" rel="external nofollow" rel="external nofollow" 
          class="dropdown-toggle" data-toggle="dropdown"
          data-hover="dropdown" data-close-others="true"> <span
            class="username username-hide-on-mobile">你好,${sessionScope.username}</span>
            <i class="fa fa-angle-down"></i>
        </a>
          <ul class="dropdown-menu">
            <li><a href="javascript:;" rel="external nofollow" rel="external nofollow" id="updatePass"><i
                class="icon-lock"></i>修改密码</a></li>
            <li><a href="<c:url value=" rel="external nofollow" rel="external nofollow" /logout"/> "><i
                class="icon-key"></i>退出登录</a></li>
          </ul></li>
      </ul>
    </div>
  </div>
</div>
<div class="clearfix"></div>
<script>
  //toastr.sos(num1)
</script>
<script type="text/javascript"
  src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>
<script type="text/javascript"
  src="http://cdn.bootcss.com/sockjs-client/1.1.1/sockjs.js"></script>
<script type="text/javascript">
  function wsPath() {
    var pathName = window.document.location.pathname;
    var host = window.location.host;
    var projectName = pathName.substring(0,
        pathName.substr(1).indexOf('/') + 1);
    return (host + projectName);
  }
  wsPath = wsPath();
  var websocket = null;
  if ('WebSocket' in window) {
    websocket = new WebSocket("ws://" + wsPath + "/websocket/socketServer");
  } else if ('MozWebSocket' in window) {
    websocket = new MozWebSocket("ws://" + wsPath
        + "/bison/websocket/socketServer");
  } else {
    websocket = new SockJS("http://" + wsPath
        + "/bison/sockjs/socketServer");
  }
  websocket.onmessage = onMessage;
  websocket.onope = onOpen;
  websocket.onerror = onError;
  websocket.onclose = onClose;
  function onOpen() {
  }
  function onMessage(evt) {
    var $uncheckedAlertMenuBtn = $("a.dropdown-toggle", $uncheckedAlertMenu);
    var $uncheckedAlertBadge = $("span.badge", $uncheckedAlertMenuBtn);
    var $uncheckedAlertMenu = $('li.dropdown-alert');
    var $uncheckedAlertList = $('ul', $uncheckedAlertMenu);
    var a = $uncheckedAlertBadge.html();
    $uncheckedAlertBadge.html(Number(a) + 1);
    //判断报警类型 如果是位置偏移,place+1
    if (evt.data == "1") {
      var count;
      var a = $("#number").html();
      if (a == null) {
        count = 1;
        $uncheckedAlertList
            .prepend('<li class="place-alert"><a href="alert?menuId=274" rel="external nofollow" rel="external nofollow" > <font color="red" id="place-alert">'
                + "位置报警(<font id ='number'>"
                + count
                + "</font>)" + '</font></a></li>');
      } else {
        count = Number(a) + 1;
        $("#place-alert").html(
            "位置偏移(<font id='number'>" + count + "</font>)");
      }
    }
    if (evt.data == "0") {
      var count;
      var a = $("#snum").html();
      if (a == null) {
        count = 1;
        $uncheckedAlertList
            .prepend('<li class="sos-alert"> <a href="alert?menuId=274" rel="external nofollow" rel="external nofollow" ><font color="red" id="sos-alert">'
                + "SOS报警(<font id='snum'>"
                + count
                + ")</font>"
                + '</font></a></li>');
      } else {
        count = Number(a) + 1;
        $("#sos-alert").html(
            "SOS报警(<font id='snum'>" + count + "</font>)");
      }
    }
  }
  function onError() {
    websocket.close();
  }
  function onClose() {
  }
  window.close = function() {
    websocket.onclose();
  }
</script>

总结

以上所述是小编给大家介绍的JS实现websocket长轮询实时消息提示的效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
js之onload事件的一点使用心得
Aug 14 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
May 12 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
Jun 02 Javascript
JS实现数字格式千分位相互转换方法
Aug 01 Javascript
通过JS获取Request.QueryString()参数的值实现方法
Sep 27 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
Feb 08 Javascript
微信扫码支付零云插件版实例详解
Apr 26 Javascript
在vue项目中集成graphql(vue-ApolloClient)
Sep 08 Javascript
对vue中v-if的常见使用方法详解
Sep 28 Javascript
vue 指令之气泡提示效果的实现代码
Oct 18 Javascript
react同构实践之实现自己的同构模板
Mar 13 Javascript
JavaScript中错误正确处理方式小结你用对了吗
Oct 10 #Javascript
vue.js实现简单轮播图效果
Oct 10 #Javascript
seajs中最常用的7个功能、配置示例
Oct 10 #Javascript
SeaJS中use函数用法实例分析
Oct 10 #Javascript
vue.js如何将echarts封装为组件一键使用详解
Oct 10 #Javascript
seajs模块压缩问题与解决方法实例分析
Oct 10 #Javascript
基于vue的换肤功能的示例代码
Oct 10 #Javascript
You might like
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
语义化 H1 标签
2008/01/14 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
python输出指定月份日历的方法
2015/04/23 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
python中必要的名词解释
2019/11/20 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
Python递归实现打印多重列表代码
2020/02/27 Python
python程序需要编译吗
2020/06/19 Python
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
法学毕业生自我鉴定
2013/11/08 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
不同意离婚答辩状
2015/05/22 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技