websocket小案例,和遇到的坑,希望对你有帮助

本文介绍了一个使用Spring实现的WebSocket小案例,详细阐述了开发环境、遇到的初始化bean为空指针的问题及其解决方案。在前端部分,提到了需要的js库,并指出通信信息在页面上直接展示。此外,还提供了web.xml和pom.xml的配置要点,以及服务端代码示例,强调了@ServerEndpoint与Spring bean的集成问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

websocket小案例

开发环境 jdk8+tomcat8

遇到的大坑:
@ServerEndpoint 对bean的不支持(如果报初始化bean对象一直为空指针)
修改为@ServerEndpoint(value = “/websocket”, configurator = SpringConfigurator.class)

客户端:sendxxx()…发送请求到服务端

前段:
(1)ws.js

 var websocket = null;
       //判断当前浏览器是否支持WebSocket
       if ('WebSocket' in window) {
          websocket = new WebSocket("ws://localhost:8080/bill_compare/websocket");
      }
      else {
          alert('当前浏览器不支持 websocket消息通知')
      }
//连接发生错误的回调方法
  websocket.onerror = f

unction () {
    	  console.log("WebSocket连接发生错误");
      };
   
       //连接成功建立的回调方法
       websocket.onopen = function () {
           console.log("ws建立连接成功");
       }
   
      //接收到消息的回调方法
       websocket.onmessage = function (evt) {
           /*setMessageInnerHTML(event.data);*/
           alert("ws接收返回消息:"+evt.data);
           console.log("服务器返回消息: " + evt.data);
      }
  
       //连接关闭的回调方法
       websocket.onclose = function () {
    	   console.log("ws连接关闭");
         
       }
   
       //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
       window.onbeforeunload = function () {
           closeWebSocket();
       }
   
       //将消息显示在网页上
  /*     function setMessageInnerHTML(innerHTML) {
          document.getElementById('message').innerHTML += innerHTML + '<br/>';
          var data = document.getElementById('message');
          alert(data);
      }*/
   
      //关闭WebSocket连接
       function closeWebSocket() {
           websocket.close();
       }
  
       //东本订单上传    发送消息
       function sendOrderBill() {
          var message = "东本订单";
          console.log("ws发送消息:"+message);
          websocket.send(message);
    	 
       }
       //扫描记录单       发送消息
       function sendScanBill(){
    	   
    	   var message = "扫描记录单上传";
           console.log("ws发送消息:"+message);
           websocket.send(message); 
    	   
       }
      /* 获取sessionID
      function getSessionId(){  
           var c_name = 'JSESSIONID';  
           if(document.cookie.length>0){  
              c_start=document.cookie.indexOf(c_name + "=")  
              if(c_start!=-1){   
                c_start=c_start + c_name.length+1   
                c_end=document.cookie.indexOf(";",c_start)  
                if(c_end==-1) c_end=document.cookie.length 
                var sessionId=unescape(document.cookie.substring(c_start,c_end));
                alert(sessionId);
                return sessionId;  
              }  
           }  
       }  */

(2) sockjs.min.js(3)stomp.min.js
这两个js文件需要自己下载 百度搜一下
我是将这几个必要的文件放在common.jsp中(公共调用)


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值