12.1.1. spring-websocket

12.1.1.1. 介绍

WebSocket协议RFC 6455为Web应用程序定义了一个重要的新功能:客户端和服务器之间的全双工,双向通信。

简单来说,他会使用HTTP用于初始握手,这取决于内置于HTTP中的机制来请求协议升级(或在这种情况下为协议交换机),服务器可以使用HTTP状态101对其进行响应(切换协议)如果它同意。假设握手成功,HTTP升级请求下面的TCP套接字保持打开,客户端和服务器都可以使用它来彼此发送消息。

Spring Framework 4包含一个全面的WebSocket支持模块spring-websocket。它与Java WebSocket API标准(JSR-356)兼容,并且还提供了额外的附加值

12.1.1.2. 什么时候适合使用websocket?

WebSocket最适合Web应用程序,客户端和服务器需要以高频率和低延迟交换事件。协同,游戏,聊天,金融股票展示等类型的应用,这样的应用对时间延迟非常敏感,并且还需要以高频率交换各种各样的消息。

低延迟和高频率的消息的组合可以使WebSocket协议的使用成为关键。

Spring框架允许@Controller和@RestController类具有HTTP请求处理和WebSocket消息处理方法。此外,Spring MVC请求处理方法或任何应用方法可以轻松地向所有感兴趣的WebSocket客户端或特定用户广播消息。

12.1.1.3. websocket、sockJS、STOMP 之间的区别

12.1.1.3.1. websocket

WebSocket 可以看成是消息架构,但不要求使用任何特定的消息传递协议。它是一个非常薄的TCP层,将字节流转换为消息流(文本或二进制),由应用来解释消息的含义。与HTTP(它是一个应用程序级协议)不同,在WebSocket协议中,框架或容器的传入消息中没有足够的信息来知道如何路由或处理它。因此,WebSocket可以说是太低级别,只是一个非常简单的应用程序。

12.1.1.3.2. sockJS

是一个协议,是websocket的备胎,一些浏览器不支持websocket的话,该协议则使用原始的ajax轮询等手段来模仿支持websocket的行为。

12.1.1.3.3. STOMP

STOMP是一种简单的消息协议,最初创建用于脚本语言,具有灵感来自HTTP的框架。STOMP得到广泛的支持,非常适合在WebSocket和Web上使用。

简单说就是STOMP适合封装在websocket上面。提供了消息路由的功能(给我最大的感受),它的使用类似与Java中的消息队列,发布订阅模型。基于地址进行消息的路由。

12.1.1.4. 本笔记的干货介绍

上面的介绍是困扰了我很久的东西,更详细的没有时间和精力去研究。简单来看差不多是ok了。

所以本笔记将会有3个demo进行讲解spring websocket的使用。

  • 低级的spring-websocket使用
  • 基于sockJS的使用
  • 重点-基于STOMP的使用

12.1.1.4.1. 后端项目介绍

不会使用spring-boot,因为我不太会,使用原始的web.xml 的方式。

gradle 构建项目;包含子模块websock 和 stomp

12.1.1.4.2. 前端项目介绍

前端使用 vue-cli 来构建,一个项目,分为3个页面。分别来讲解低级的,sockJS,stomp 怎么与后端使用。

由于前面的比较简单,着重讲解我对stomp的一些理解。

Git地址 https://github.com/zq99299/java-websocket-demo

© All Rights Reserved            updated 2017-11-15 16:11:53

results matching ""

    No results matching ""