- 浏览: 599244 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
1.什么是Websocket
首先,Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。
简单的举个例子吧,用目前应用比较广泛的PHP生命周期来解释。
1) HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。
在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。
但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。
2.开启支持websocket(@EnableWebSocketMessageBroker)
3.类似controller请求的action
4.页面
首先,Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。
简单的举个例子吧,用目前应用比较广泛的PHP生命周期来解释。
1) HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。
在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。
但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。
2.开启支持websocket(@EnableWebSocketMessageBroker)
import org.springframework.context.annotation.Configuration; import org.springframework.messaging.simp.config.MessageBrokerRegistry; import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer; import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; import org.springframework.web.socket.config.annotation.StompEndpointRegistry; /** (1)@EnableWebSocketMessageBroker注解用于开启使用STOMP协议来传输基于代理(MessageBroker)的消息,这时候控制器(controller) 开始支持@MessageMapping,就像是使用@requestMapping一样。 (2)注册一个Stomp的节点(endpoint),并指定使用SockJS协议。 (3)配置消息代理(MessageBroker)。 **/ @Configuration @EnableWebSocketMessageBroker//1 public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer{ @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/endpointWisely").withSockJS(); //2 } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.enableSimpleBroker("/topic");//3 } }
3.类似controller请求的action
import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.SendTo; import org.springframework.stereotype.Controller; /** * *(1)@MessageMapping和@RequestMapping功能类似,用于设置URL映射地址,浏览器向服务器发起请求,需要通过该地址。 * *(2)如果服务器接受到了消息,就会对订阅了@SendTo括号中的地址传送消息。 * @author lanwx * @time 2017年11月22日上午10:11:37 */ @Controller public class WsController { @MessageMapping("/welcome") // 1 接受请求的地址 @SendTo("/topic/getResponse") // 2 订阅的地址 public WiselyResponse say(WiselyMessage message) throws Exception { return new WiselyResponse("Welcome, " + message.getName() + "!"); } }
4.页面
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8" /> <title>Spring Boot+WebSocket+广播式</title> </head> <body onload="disconnect()"> <noscript><h2 style="color: #ff0000">貌似你的浏览器不支持websocket</h2></noscript> <div> <div> <button id="connect" onclick="connect();">连接</button> <button id="disconnect" disabled="disabled" onclick="disconnect();">断开连接</button> </div> <div id="conversationDiv"> <label>输入你的名字</label><input type="text" id="name" /> <button id="sendName" onclick="sendName();">发送</button> <p id="response"></p> </div> </div> <script src="https://cdn.bootcss.com/angular.js/1.5.6/angular.min.js"></script> <script src="https://cdn.bootcss.com/sockjs-client/1.1.4/sockjs.min.js"></script> <script src="https://cdn.bootcss.com/stomp.js/2.3.3/stomp.min.js"></script> <script src="/common/jquery/3.2.1/jquery-3.2.1.js"></script> <script type="text/javascript"> var stompClient = null; function setConnected(connected) { document.getElementById('connect').disabled = connected; document.getElementById('disconnect').disabled = !connected; document.getElementById('conversationDiv').style.visibility = connected ? 'visible' : 'hidden'; $('#response').html(); } function connect() { // 注册到一个Stomp的节点 var socket = new SockJS('/endpointWisely'); //1 stompClient = Stomp.over(socket);//2 stompClient.connect({}, function(frame) {//3 setConnected(true); console.log('开始进行连接Connected: ' + frame); stompClient.subscribe('/topic/getResponse', function(respnose){ //4 showResponse(JSON.parse(respnose.body).responseMessage); }); }); } function disconnect() { if (stompClient != null) { stompClient.disconnect(); } setConnected(false); console.log("Disconnected"); } // 发送到 @MessageMapping("/welcome") 这个地址 function sendName() { var name = $('#name').val(); stompClient.send("/welcome", {}, JSON.stringify({ 'name': name }));//5 } function showResponse(message) { var response = $("#response"); response.html(message); } </script> </body> </html>
发表评论
文章已被作者锁定,不允许评论。
-
Spring BeanFactoryPostProcessor和BeanPostProcessor的区别
2018-11-14 15:40 705链接:https://blog.csdn.net/caihai ... -
spring BeanPostProcessor理解
2018-11-14 11:31 321链接:https://blog.csdn.net/ginkgo ... -
Spring 源码解析之Initializer
2018-11-14 11:27 456链接:https://blog.csdn.net/ktlife ... -
spring transaction同一个类不回滚解决方法
2018-10-11 10:59 7711.修改配置文件 <aop:aspectj-autopr ... -
Spring @Transaction学习
2018-10-08 10:36 2921.考虑有下面这么一个类 public class Foo ... -
spring mvc i18n国际化学习(spring:message)
2018-06-09 09:35 640spring.xml文件中配置: <!-- 存储区域 ... -
Spring Boot Oauth2.0授权服务器
2018-05-11 14:19 1652什么是OAuth? OAuth(Open Authoriza ... -
Spring Boot @Import注解(将指定类实例注入到IOC容器中)
2018-05-09 10:20 1597SpringBoot 的 @Import 用于将指定的类实例注 ... -
Spring Boot @Conditional注解
2018-05-09 10:15 1816Spring Boot的强大之处在于使用了Spring 4框架 ... -
Spring Boot自定义starter pom实例(/META-INFO/spring.factory文件)
2018-05-09 09:48 1138自定义starter pom 自己实现一个简单的例子,当某个类 ... -
Spring Boot自动配置原理(@Conditional @Import)
2018-04-26 14:45 1338Springboot的自动配置是SpringBoot的关键,主 ... -
Spring Boot优缺点总结
2018-04-16 10:25 1536优点: 1.去除了大量的xml配置文件 2.简化 ... -
SpringBoot JPA @Transaction 知识学习
2018-03-16 09:09 761一、事务相关概念 1、事务的特点 原子性:事务是一个原子操 ... -
Sprint @Query注解的用法(nativeQuery=true/false)(Spring Data JPA)
2018-03-15 16:33 38381. 一个使用@Query注解的简单例子 @Query(val ... -
Spring Boot JpaRepository知识学习(Spring Data JPA)
2018-03-14 11:17 18001.Spring Data所解决的问题 Spring Dat ... -
SpringCloud Hystrix知识学习(防止雪崩效应)
2018-03-13 14:57 929一、Hystrix说明 1.服务雪崩效应:是一种因服务提供者的 ... -
SpringCloud @LoadBalanced注解学习
2018-03-13 09:48 2221当时我们说开启负载均衡很简单,只需要在RestTemplate ... -
Spring Boot配置方式(java配置和注解配置)
2018-03-12 15:09 1109Java配置 从Spring 3.x开始,Spring提供了J ... -
java RestTemplate访问restful服务
2018-03-01 15:02 1621REST的基础知识 当谈论REST时,有一种常见的错误就是将其 ... -
SpringCloud | 第七篇: 高可用的服务注册中心
2018-02-26 14:31 484文章 第一篇: 服务的注册与发现(Eureka) 介绍了服务注 ...
相关推荐
在本文中,我们将深入探讨如何在Spring Boot项目中整合WebSocket技术,以便实现高效的实时通信功能。Spring Boot以其简洁的配置和强大的功能深受开发者喜爱,而WebSocket作为一种双向通信协议,能够提供持续的连接,...
1. **Spring Boot集成WebSocket**:Spring Boot提供了Spring WebSocket模块,可以方便地集成WebSocket功能。通过配置`WebSocketConfig`类,我们可以定义WebSocket的端点(如`/websocket`),并在该端点上处理连接...
Spring Boot通过引入`spring-boot-starter-websocket`模块可以轻松集成WebSocket。在`pom.xml`文件中添加以下依赖,以支持WebSocket的依赖管理: ```xml <groupId>org.springframework.boot <artifactId>spring-...
在Spring Boot中,可以通过`spring-websocket`模块实现WebSocket功能。使用`@ServerEndpoint`注解定义WebSocket的端点,`@MessageMapping`用于处理消息。同时,还需要配置WebSocket的消息处理器,例如使用`...
Spring Boot 的 WebSocket 模块可以通过 spring-boot-starter-websocket 来快速集成,这个 starter 包含了所有需要的依赖和自动配置,让使用者能够轻松地集成 WebSocket 功能。 在 Spring Boot 中,我们可以使用 @...
要实现Spring Boot分布式Session与Redis的整合,我们需要以下几个步骤: 1. **添加依赖**: 首先在`pom.xml`或`build.gradle`文件中添加Spring Session和Redis的依赖。对于Maven,可以添加如下依赖: ```xml ...
- Spring Boot 使用 Websocket - springboot-webflux - Spring Boot 集成 WebFlux 开发反应式 Web 应用 - springboot-dubbo - Spring Boot 集成 Dubbo 的三种方式 - springboot-search - Spring Boot 集成...
以上就是Spring Boot整合ActiveMQ和WebSocket的基本概念和关键步骤。通过这样的整合,我们可以构建一个高效的消息传递系统,支持实时的前端与后端通信。如果需要实现WebSocket部分,可以参考Spring官方文档和相关...
1. 自动配置:Spring Boot根据类路径中的依赖自动配置Spring容器,例如,如果你引入了`spring-boot-starter-web`模块,那么它将自动配置Tomcat服务器和Spring MVC。 2. 嵌入式服务器:Spring Boot支持内嵌Tomcat、...
总结,Spring Boot整合WebSocket提供了实时通信的能力,使得前后端可以高效地进行数据交换。前端使用JavaScript库与后端WebSocket服务进行连接并订阅消息,后端则通过`@MessageMapping`和`@SendTo`注解处理连接请求...
在这个项目中,Spring不仅作为后端服务的基础框架,还通过其提供的WebSocket模块,帮助开发者轻松集成WebSocket功能。 首先,项目的实现依赖于Spring Boot,这是一个Spring框架的微服务启动器,它简化了Spring应用...
1. **Spring Boot**:Spring Boot简化了Spring应用的初始搭建以及开发过程,它集成了大量的常用库,如数据访问、安全、WebSocket等,允许开发者快速构建可独立运行的Java应用。 2. **Dubbo**:Dubbo是基于Java的RPC...
Spring Boot WebChat 网页聊天室是一款基于Spring Boot框架构建的应用,整合了Spring Security、Spring Data JPA、Thymeleaf以及Spring WebSocket等技术,为用户提供了一个实时的在线聊天平台。下面将详细介绍这些...
对于Spring WebSocket应用,可以使用Spring Boot的Actuator端点检查WebSocket统计信息。 综上所述,`Spring-WebSocket-demo01.zip`提供的入门示例涵盖了从WebSocket配置、消息处理到客户端连接的基本操作,是学习...
- Spring Boot Test模块,提供单元测试和集成测试的支持。 - 使用Mockito、WireMock等工具进行模拟测试。 8. **配置管理** - 使用application.properties或yaml文件进行配置。 - 外部化配置,通过环境变量或...
在本文中,我们将深入探讨如何使用Spring框架的WebSocket模块与SockJS进行整合,实现服务器与客户端之间的高效、低功耗的双向通信。Spring WebSocket提供了一种现代化的方式,使得Web应用程序能够实现实时通信,而...
通过本项目,开发者可以深入了解Spring Boot的各种功能和特性,包括配置管理、数据库集成、缓存、日志管理、异常处理、文件上传、WebSocket等。 项目的主要特性和功能 1. Spring Boot快速启动通过简单的示例演示...
Spring Boot 是一个流行的Java开发框架,它简化了创建独立、生产级别的基于Spring的应用程序的过程。...通过深入理解和应用这些知识点,你可以熟练掌握Spring Boot和WebSocket的整合,从而在开发实时应用时游刃有余。
《Spring Boot实战》是一本深度剖析Spring Boot框架的电子书,包含了中英文两个...通过阅读这本书,读者将能够熟练掌握Spring Boot的各个核心模块,并能灵活运用到实际项目中,提高开发效率,打造高质量的Java应用。
5. 整合WebSocket:使用WebSocket实现实时通信,提升用户体验。 6. 异步处理:通过@Async注解实现方法的异步执行,提高系统性能。 7. 微服务集成:与Spring Cloud结合,构建分布式系统,实现服务发现、负载均衡等...