当前位置:Gxlcms > JavaScript > JS实现websocket长轮询实时消息提示的效果

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

时间:2021-07-01 10:21:17 帮助过:38人阅读

效果图如下:

参考代码如下:

jsp代码:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java"%>
  2. <div class="page-header navbar navbar-fixed-top">
  3. <div class="page-header-inner">
  4. <div class="page-logo">
  5. <a href="<c:url value=" rel="external nofollow" rel="external nofollow" /"/>"><img
  6. src="<c:url value="/img/logo.png"/>" style="height: 14px" alt="logo"
  7. class="logo-default" /></a>
  8. <div class="menu-toggler sidebar-toggler hide"></div>
  9. </div>
  10. <a href="javascript:;" rel="external nofollow" rel="external nofollow" class="menu-toggler responsive-toggler"
  11. data-toggle="collapse" data-target=".navbar-collapse"></a>
  12. <div class="top-menu">
  13. <ul class="nav navbar-nav pull-right">
  14. <li class="dropdown dropdown-alert"><a href="#" rel="external nofollow" rel="external nofollow"
  15. class="dropdown-toggle" data-toggle="dropdown"
  16. data-hover="dropdown" data-close-others="true"> <span
  17. class="badge pull-left"></span><label class="hidden-sm">报警</label><i
  18. class="fa fa-bell"></i>
  19. </a>
  20. <ul class="dropdown-menu">
  21. </ul></li>
  22. <li class="dropdown dropdown-user"><a href="#" rel="external nofollow" rel="external nofollow"
  23. class="dropdown-toggle" data-toggle="dropdown"
  24. data-hover="dropdown" data-close-others="true"> <span
  25. class="username username-hide-on-mobile">你好,${sessionScope.username}</span>
  26. <i class="fa fa-angle-down"></i>
  27. </a>
  28. <ul class="dropdown-menu">
  29. <li><a href="javascript:;" rel="external nofollow" rel="external nofollow" id="updatePass"><i
  30. class="icon-lock"></i>修改密码</a></li>
  31. <li><a href="<c:url value=" rel="external nofollow" rel="external nofollow" /logout"/> "><i
  32. class="icon-key"></i>退出登录</a></li>
  33. </ul></li>
  34. </ul>
  35. </div>
  36. </div>
  37. </div>
  38. <div class="clearfix"></div>
  39. <script>
  40. //toastr.sos(num1)
  41. </script>
  42. <script type="text/javascript"
  43. src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>
  44. <script type="text/javascript"
  45. src="http://cdn.bootcss.com/sockjs-client/1.1.1/sockjs.js"></script>
  46. <script type="text/javascript">
  47. function wsPath() {
  48. var pathName = window.document.location.pathname;
  49. var host = window.location.host;
  50. var projectName = pathName.substring(0,
  51. pathName.substr(1).indexOf('/') + 1);
  52. return (host + projectName);
  53. }
  54. wsPath = wsPath();
  55. var websocket = null;
  56. if ('WebSocket' in window) {
  57. websocket = new WebSocket("ws://" + wsPath + "/websocket/socketServer");
  58. } else if ('MozWebSocket' in window) {
  59. websocket = new MozWebSocket("ws://" + wsPath
  60. + "/bison/websocket/socketServer");
  61. } else {
  62. websocket = new SockJS("http://" + wsPath
  63. + "/bison/sockjs/socketServer");
  64. }
  65. websocket.onmessage = onMessage;
  66. websocket.onope = onOpen;
  67. websocket.onerror = onError;
  68. websocket.onclose = onClose;
  69. function onOpen() {
  70. }
  71. function onMessage(evt) {
  72. var $uncheckedAlertMenuBtn = $("a.dropdown-toggle", $uncheckedAlertMenu);
  73. var $uncheckedAlertBadge = $("span.badge", $uncheckedAlertMenuBtn);
  74. var $uncheckedAlertMenu = $('li.dropdown-alert');
  75. var $uncheckedAlertList = $('ul', $uncheckedAlertMenu);
  76. var a = $uncheckedAlertBadge.html();
  77. $uncheckedAlertBadge.html(Number(a) + 1);
  78. //判断报警类型 如果是位置偏移,place+1
  79. if (evt.data == "1") {
  80. var count;
  81. var a = $("#number").html();
  82. if (a == null) {
  83. count = 1;
  84. $uncheckedAlertList
  85. .prepend('<li class="place-alert"><a href="alert?menuId=274" rel="external nofollow" rel="external nofollow" > <font color="red" id="place-alert">'
  86. + "位置报警(<font id ='number'>"
  87. + count
  88. + "</font>)" + '</font></a></li>');
  89. } else {
  90. count = Number(a) + 1;
  91. $("#place-alert").html(
  92. "位置偏移(<font id='number'>" + count + "</font>)");
  93. }
  94. }
  95. if (evt.data == "0") {
  96. var count;
  97. var a = $("#snum").html();
  98. if (a == null) {
  99. count = 1;
  100. $uncheckedAlertList
  101. .prepend('<li class="sos-alert"> <a href="alert?menuId=274" rel="external nofollow" rel="external nofollow" ><font color="red" id="sos-alert">'
  102. + "SOS报警(<font id='snum'>"
  103. + count
  104. + ")</font>"
  105. + '</font></a></li>');
  106. } else {
  107. count = Number(a) + 1;
  108. $("#sos-alert").html(
  109. "SOS报警(<font id='snum'>" + count + "</font>)");
  110. }
  111. }
  112. }
  113. function onError() {
  114. websocket.close();
  115. }
  116. function onClose() {
  117. }
  118. window.close = function() {
  119. websocket.onclose();
  120. }
  121. </script>

总结

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

人气教程排行