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 相关文章推荐
js正确获取元素样式详解
Aug 07 Javascript
jQuery第三课 修改元素属性及内容的代码
Mar 14 Javascript
js 利用image对象实现图片的预加载提高访问速度
Mar 29 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
Apr 07 Javascript
js 获取radio按钮值的实例
Aug 17 Javascript
JavaScript返回上一页的三种方法及区别介绍
Jul 04 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
js实现图片轮播效果
Dec 19 Javascript
React简单介绍
May 24 Javascript
微信小程序 转发功能的实现
Aug 04 Javascript
JS计算距当前时间的时间差实例
Dec 29 Javascript
QRCode.js二维码生成并能长按识别
Oct 16 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
实用函数3
2007/11/08 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
2010/03/23 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
python字符串替换的2种方法
2014/11/30 Python
详解Python如何生成词云的方法
2018/06/01 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
Django框架安装方法图文详解
2019/11/04 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
python实现滑雪者小游戏
2020/02/22 Python
Python依赖包迁移到断网环境操作
2020/07/13 Python
涂鸦板简单实现 Html5编写属于自己的画画板
2016/07/05 HTML / CSS
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
机电专业个人自荐信格式模板
2013/09/23 职场文书
汽车运用工程毕业生自荐信
2013/10/29 职场文书
应聘教师推荐信
2013/10/31 职场文书
给领导的致歉信范文
2014/01/13 职场文书
函授本科自我鉴定
2014/02/04 职场文书
工作检讨书大全
2015/01/26 职场文书
关于mysql中string和number的转换问题
2022/06/14 MySQL