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

 更新时间:2017年10月10日 11:07:35   作者:祈澈姑娘  
这篇文章主要介绍了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长轮询实时消息提示的效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Ajax请求时无法重定向的问题解决代码详解

    Ajax请求时无法重定向的问题解决代码详解

    这篇文章主要介绍了Ajax请求时无法重定向的问题解决代码详解,当使用Ajax请求时,如果后台进行重定向到其他页面时是无法成功的,只能在浏览器地址栏输入才能够实现重定向。下面我们来看看解决方法吧
    2019-06-06
  • JS中取二维数组中最大值的方法汇总

    JS中取二维数组中最大值的方法汇总

    本文通过三种解决方案给大家介绍js中取二维数组中最大值的方法。介绍的非常详细,具有参考价值
    2016-04-04
  • Bootstrap 模态框自定义点击和关闭事件详解

    Bootstrap 模态框自定义点击和关闭事件详解

    今天小编就为大家分享一篇Bootstrap 模态框自定义点击和关闭事件详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • WEB前端实现裁剪上传图片功能

    WEB前端实现裁剪上传图片功能

    文件上传功能在各大网站经常会用到,今天小编通过本文给大家介绍了WEB前端实现裁剪上传图片功能的相关资料,需要的朋友可以参考下
    2016-10-10
  • echarts动态渲染柱状图背景颜色及顶部数值方法详解

    echarts动态渲染柱状图背景颜色及顶部数值方法详解

    在使用echarts时,有时需要给柱状图设置背景,下面这篇文章主要给大家介绍了关于echarts动态渲染柱状图背景颜色及顶部数值的相关资料,文中通过图文以及代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 几个javascript操作word的参考代码

    几个javascript操作word的参考代码

    几个javascript操作word的参考代码,对于具体的调用代码,大家可以参考我们的上一篇文章。
    2009-10-10
  • Bootstrap table 定制提示语的加载过程

    Bootstrap table 定制提示语的加载过程

    bootstrap-table是在bootstrap-table的基础上写出来的,专门用于显示数据的表格插件。这篇文章主要介绍了Bootstrap table 定制提示语,需要的朋友可以参考下
    2017-02-02
  • JavaScript实现获取img的原始尺寸的方法详解

    JavaScript实现获取img的原始尺寸的方法详解

    在微信小程序开发时,它的image标签有一个默认高度,这样你的图片很可能出现被压缩变形的情况,所以就需要获取到图片的原始尺寸对image的宽高设置,本文就来分享一下JavaScript实现获取img的原始尺寸的方法吧
    2023-03-03
  • 一文详解如何在uniapp中优雅地使用WebView

    一文详解如何在uniapp中优雅地使用WebView

    最近工作中遇到webview,对于我这个刚接触前端的小白来说真的不懂啥意思,下面这篇文章主要给大家介绍了关于如何在uniapp中优雅地使用WebView的相关资料,需要的朋友可以参考下
    2023-01-01
  • JavaScript利用Immerjs实现不可变数据

    JavaScript利用Immerjs实现不可变数据

    Immerjs 是一个用于管理 JavaScript 不可变数据结构的库,它可以帮助我们更轻松地处理状态的变化,并减少冗余代码。本文就来带大家揭秘如何利用Immerjs实现不可变数据,感兴趣的可以了解一下
    2023-04-04

最新评论