- websocket
- 实现步骤
- 一、环境搭建
- 二、完成后台的功能
websocket
简单的说,websocket是真正实现了全双工通信的服务器向客户端推的互联网技术。
全双工与单工、半双工的区别?
- 全双工:简单地说,就是可以同时进行信号的双向传输(A->B且B->A),是瞬时同步的。
- 单工、半双工:一个时间段内只有一个动作发生。
推送和拉取的区别?
- 推:由服务器主动发消息给客户端,就像广播。优势在于,信息的主动性和及时性。
- 拉:由客户端主动请求所需要的数据。
实现消息通信的几种方式?
- 传统的http协议实现方式:。
- 传统的socket技术。
- websocket协议实现方式。
接下来我们主要讲第三种,使用websocket协议,来实现服务端定时向客户端推送消息。
- 开发环境:jdk1.8、tomcat7
- 后台:springmvc、websocket、quartz
- 前台:html5中新增的API
- 开发工具:IDEA、maven
实现步骤
一、环境搭建
(1)导入相关约束:
在pom文件中加入需要的约束,spring相关的约束,请各位自己导入,这里我就不贴出来了。
<!-- 定时器的包 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<!--
spring-support.jar 这个jar 文件包含支持UI模版(Velocity,FreeMarker,JasperReports),邮件服务,脚本服务(JRuby),缓存Cache(EHCache),任务计划Scheduling(uartz)方面的类。
外部依赖spring-context, (spring-jdbc, Velocity, FreeMarker, JasperReports, BSH, Groovy, JRuby, Quartz, EHCache)
-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.1.1.RELEASE</version>
</dependency>
<!-- websocket的包 -->
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
<!--
ps:如果使用原始的配置方式,需要导入spring-websocket、spring-messaging的包,我们这里就通过注解实现
-->
(2)配置xml文件
web.xml中就配置前端控制器,大家自行配置。然后,加载springmvc的配置文件。
springmvc.xml文件中
<!-- 自动将控制器加载到bean -->
<context:component-scan base-package="com.socket.web" />
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="contentType" value="text/html; charset=utf-8"/>
</bean>
<!-- 自动注册 DefaultAnnotationHandlerMapping 与 AnnotationMethodHandlerAdapter 两个 bean, 解决了 @Controller 注解的使用前提配置 -->
<mvc:annotation-driven/>
<!-- 使用fastjson 解析json 因为本人的项目中用到了fastjson,所以这段配置大家可以忽略。 -->
<mvc:annotation-driven>
<mvc:message-converters