关于Spring与WebSocket结合的简单例子

本文介绍了如何在Spring 4.0环境下,结合Tomcat 8.0和Myeclipse2014,实现WebSocket与Spring的集成。通过创建WebSocket处理类、配置WebSocketConfig并编写JSP页面,展示了简单的消息收发功能。注意JDK版本需为1.8,且需关注不同浏览器的兼容性问题。

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

      我的运行环境是:Tomcat 8.0 + Spring 4.0 + Myeclipse2014 + Firefox 42

       JDK 1.8 不支持Spring 4.0 之前的版本

      使用Google浏览器,Spring可能会抛出异常:The extension [x-webkit-deflate-frame] is not supported] with root cause

       使用maven 管理jar包 

     

        JAVA代码

        WebSocket处理类

       public class MyHandler extends TextWebSocketHandler implements WebSocketHandler {


    @Override
    public void handleTextMessage(WebSocketSession session, TextMessage message) {
    System.out.println("-------onMessage-------");
    
       System.out.println(message.toString());
       System.out.println(session.getRemoteAddress());  
      
         try {
       
session.sendMessage(new TextMessage("hello"));  //发送消息给客户端
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
        }
   }  

  与客户端连接

  @Configuration  
  @EnableWebSocket
  public class WebSocketConfig implements WebSocketConfigurer{


@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(myHandler(), "/myHandler");
 
}
@Bean
        public WebSocketHandler myHandler() {
           return new MyHandler();
        }
  }

  JSP代码

  <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML >
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>

  
    <script src="http://cdn.sockjs.org/sockjs-0.3.min.js"></script>  
  
    <script type="text/javascript">  
      var ws = null;
      var result = 1;
         ws = new WebSocket('ws://127.0.0.1:8082/day_0900_WebSocket/myHandler');   //此处的day_0900_WebSocket项目名,myHandler与WebSocketConfig 里        的/myHandler对应是建立连接的关键。
         ws.onopen = function () {      //通信连接成功后执行此代码。
            result = 2;
               
               
            };  
  
         ws.onmessage = function (event) {   //接受服务端消息时执行此代码
             
                alert(event.data);
            };  
  
         ws.onclose = function (event) {     // 连接关闭时执行此代码
            
               
            };  
        function  my(){
          if(result == 2){
          ws.send("dd");     //向客户端发送消息
       
          }
        }
   
    </script>  
</head>
<body>
     <noscript><h2 style="color: #ff0000">Seems your browser doesn't support Javascript! Websockets   
    rely on Javascript being enabled. Please enable  
    Javascript and reload this page!</h2></noscript>  
    <button onclick="my()">hello</button>
  </body>
</html>

       到此,程序完成,当然不要忘记配置XML文件(正常配置),这个例子比较简单,只要环境搭建的没有问题,参照spring文档,应该没有什么问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值