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 相关文章推荐
javascript实现可改变滚动方向的无缝滚动实例
Jun 17 Javascript
JS中自定义定时器让它在某一时刻执行
Sep 02 Javascript
javascript实现在网页中运行本地程序的方法
Feb 03 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
Apr 15 Javascript
AngularJS动态添加数据并删除的实例
Feb 27 Javascript
在小程序中使用Echart图表的示例代码
Aug 02 Javascript
vue实现键盘输入支付密码功能
Aug 18 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
Nov 18 jQuery
微信小程序indexOf的替换方法(推荐)
Jan 14 Javascript
ES6扩展运算符和rest运算符用法实例分析
May 23 Javascript
vue Element左侧无限级菜单实现
Jun 10 Javascript
ES6字符串的扩展实例
Dec 21 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
PHP面向对象程序设计之接口用法
2014/08/20 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
python目录与文件名操作例子
2016/08/28 Python
Python编写Windows Service服务程序
2018/01/04 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
Java语言程序设计测试题改错题部分
2014/07/22 面试题
大学生未来职业生涯规划书
2014/02/15 职场文书
服务质量承诺书
2014/03/27 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
财务人员入职担保书
2015/09/22 职场文书
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript