`
phoenix520
  • 浏览: 142240 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring websocket

阅读更多

    Spring自从4.0开始提供了对websocket的支持,配合sockjs,可以部分兼容到IE6,websocket终于可以大行其道了。

    实际使用中遇到不少问题,逐步列举出来,避免以后忘掉。

 

  1. 由于浏览器设置了http代理,结果创建websocket时失败,提示:Error in connection establishment: net::ERR_TUNNEL_CONNECTION_FAILED。取消浏览器代理后恢复正常。
  2. 在web.xml中,DispatcherServlet和spring-mvc需要用到的全部filter,都需要加上<async-supported>true</async-supported>,以便在sockjs兼容不支持websocket的浏览器时使用。
  3. 工程使用spring-mvc传统的方式配置,即使用ContextLoaderListener来加载root的Spring-contextConfigLocation(除Controller外的其他Component),使用DispatcherServlet来加载Controller。而处理websocket的业务逻辑写在Controller中,加上了@MessageMapping的注解,结果请求根本到不了Controller里面去。后来发现AbstractMethodMessageHandler负责扫描@MessageMapping,但是在该类的子类实例化时,把Spring的Root Context扔进去了,这里面是没有Controller的类的,所以后面websocket的请求就到不了Controller。将websocket的相关配置文件放到DispatcherServlet里去加载,于是问题解决。

 

相关配置示例:

web.xml:

 

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:/applicationContext*.xml</param-value>
    </context-param>

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

<servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                classpath*:/spring-*.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>

 applicationContext.xml:

<context:component-scan base-package="xxx.xxx">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

 spring-mvc.xml:

<context:component-scan base-package="x.x.x" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

 spring-websocket.xml:

<websocket:message-broker application-destination-prefix="/app">
        <websocket:stomp-endpoint path="/chat">
            <websocket:sockjs/>
        </websocket:stomp-endpoint>
        <websocket:simple-broker prefix="/public,/private"/>
    </websocket:message-broker>

 

 

分享到:
评论

相关推荐

    spring websocket

    Spring框架提供了对WebSocket的支持,使得在Java后端开发中集成WebSocket变得简单。在这个名为"spring websocket"的项目中,我们将会实现三个主要功能:客户端之间的消息传递、客户端向服务器发送消息以及服务器向...

    spring websocket 测试项目

    在Spring框架中,Spring WebSocket提供了一套完整的解决方案来支持WebSocket的开发。这个"spring websocket 测试项目"是为了帮助开发者理解和实践如何在实际应用中集成和使用WebSocket。 首先,我们要了解Spring ...

    spring websocket完整Demo

    **Spring WebSocket 完整Demo详解** WebSocket是一种在客户端与服务器之间建立长连接的协议,它提供了双向通信的能力,使得服务器可以主动向客户端推送数据。在Web应用中,Spring框架提供了对WebSocket的支持,使得...

    spring websocket在线聊天demo

    在"spring websocket在线聊天demo"中,我们主要探讨的是如何利用Spring框架集成WebSocket,创建一个功能完备的在线聊天应用。 1. **Spring WebSocket概述** Spring框架提供了对WebSocket的支持,通过`spring-...

    springwebsocket 中文注释案例

    《Spring WebSocket 中文注释案例详解》 在现代Web开发中,实时通信功能变得越来越重要,Spring框架提供了WebSocket支持,使得服务器与客户端可以进行双向通信,实现高效、低延迟的数据交换。本文将深入探讨一个...

    spring websocket的demo

    在Spring框架中,Spring Boot提供了对WebSocket的支持,使得开发者可以方便地集成WebSocket功能到自己的应用程序中。 在"spring websocket的demo"中,我们看到的是一个基于Spring Boot实现的WebSocket服务器和...

    springWebsocket的简单例子

    在本文中,我们将深入探讨如何使用Spring框架,特别是Spring WebSocket,来创建一个简单的WebSocket应用程序。这对于初学者来说是一个很好的起点,因为它提供了一个直观的理解和实践机会。 首先,让我们了解Spring ...

    spring+websocketdemo

    在这个"spring+websocketdemo"中,我们将探讨如何结合Spring框架和WebSocket技术来构建一个实时通信的应用,并引入Netty作为WebSocket的服务器端实现。 首先,Spring框架是Java企业级应用开发的主流选择,它提供了...

    SpringWebSocket-master.zip

    SpringWebSocket-master.zip是一个包含Spring Boot应用的示例项目,展示了如何使用WebSocket技术和STOMP协议实现前后端通信。WebSocket是一种在单个TCP连接上进行全双工通信的协议,相较于传统的HTTP请求,它允许...

    websocket+spring

    Spring框架,作为Java开发中的主流框架,提供了对WebSocket的支持,使得开发者可以轻松地在Spring应用中集成WebSocket功能。 在这个"websocket+spring"项目中,前端和后端的代码都包含了实现WebSocket通信的逻辑。...

    Spring+Netty+WebSocket实例

    在现代Web开发中,实时通信已经成为一个不可或缺的功能,Spring、Netty和WebSocket的结合为构建高性能、低延迟的实时应用提供了强大的解决方案。本实例将详细探讨如何利用这三种技术进行集成,实现高效的双向通信。 ...

    Spring Websocket

    **Spring WebSocket 深度解析** WebSocket 是一种在客户端与服务器之间建立长连接的协议,它允许双方进行双向通信,而不仅仅是服务器向客户端推送数据。在Web应用中,WebSocket为实时交互提供了强大的支持,比如...

    Spring WebSocket通信应用实例demo

    在Spring框架中,Spring WebSocket提供了全面的支持,使得开发人员可以轻松地集成WebSocket功能到他们的应用程序中。下面将详细介绍Spring WebSocket通信应用实例,包括其工作原理、配置、心跳监测以及如何构建一个...

    spring websocket 与echart 集成

    在IT行业中,Spring框架提供了对WebSocket的支持,使得开发者可以方便地在Java应用中集成WebSocket功能。 标题中的“spring websocket与echart集成”意味着我们要探讨的是如何在使用Spring框架构建的Web应用中,...

    使用spring-websocket包搭建websocket服务

    Spring WebSocket是Spring框架提供的一套完整的WebSocket支持,它使得在Spring应用中集成WebSocket变得简单。 **一、WebSocket简介** WebSocket API设计目标是为了提供低延迟、高效率的双向通信机制。与HTTP不同,...

    spring websocket获取httpsession

    要在Spring WebSocket中获取HttpSession,我们通常会使用STOMP(Simple Text Oriented Messaging Protocol)作为WebSocket的消息协议,因为它易于理解和实现,并且Spring提供了很好的支持。以下是一步步实现的步骤:...

    SpringWebSocket.jar

    SpringWebSocket.jar

Global site tag (gtag.js) - Google Analytics