springboot socket服务端_从零开始学SpringBoot之Spring Boot WebSocket:编码分析
前言:
在上一篇文章中讲到了WebSocket的原理,这节中我们先简单的编码分析下,这样有助于在之后的实战编码。
说明:
(1)编码中使用的Spring Boot版本是:1.5.8;
(2) 使用WebSocket有两种方式: 第一种方式使用socketJS, 第二种方式是使用H5的标准。实例中使用的是第二种方式;
(3)最后提供源代码;
编码分析:
在例子中,我们需要编写两端的代码:服务端和客户端(当然代码都在一个工程里)。
(1)Client:客户端说明
客户端的代码主要是使用H5的WebSocket进行实现,在前端网页中使用WebSocket进行连接服务端,然后建立Socket连接进行通讯。
(2)Server:服务端说明
服务端主要是建立多个客户端的关系,进行消息的中转等。客户端成功连接到服务端之后,就可以通过建立的通道进行发送消息到服务端,服务端接收到消息之后在群发给所有的客户端。
(3)客户端和服务端怎么连接?
客户端通过JS中的WebSocket对象进行连接到服务端:
服务端映射出在上面使用的/websocket 端点呢,使用注解@ServerEndpoint即可:
当客服端有连接请求了,服务端怎么接收请求,使用注解@OnOpen即可:
(4)客户端和服务端怎么发送消息?
客户端可以使用webSocket提供的send()方法,如下代码:
服务端怎么发送消息呢?主要是使用在成功建立连接的时候,创建的Session对象进行发送,如下代码:
(5)客户端和服务端怎么接收消息?
客户端接收消息消息使用的是websocket的onmessage回调方法,如下代码:
服务端怎么接收到消息,使用注解@OnMessage,如下代码:
(6)客户端和服务端关闭连接处理?
客户端使用websocket.close()进行关闭连接;
服务端使用@OnClose注解监听客户端的关闭动作。
(7)客户端和服务端异常处理?
客户端当有异常信息的时候会回调方法:websocket.onerror;
服务端使用@OnError注解监听异常信息。
(8)群聊原理(群发消息)
服务端在和客户端建立连接的时候,会创建一个webSocket对象,我们会将每个连接创建的对象进行报错到一个列表中,比如:CopyOnWriteArraySet(这是线程安全的);在要进行群发的时候,编写我们的列表对象进行群发消息。
(9)单聊原理(一对一消息)
单聊的时候,就无需遍历列表,而是需要知道发送者和接受者各自的Session对象,这个Session对象怎么获取呢?Session可以获取到sessionId,发送者在发送消息的时候,携带接收消息的sessionId,那么问题就演变成了:发送者怎么知道接受者的sessionId,那就是加入一个在线用户列表即可,在线用户列表中有用户的基本信息,包括sessionId。
明白了这些,在接下里的编码中就会轻松很多。
转载自阿里大牛悟纤的公众号。
springboot socket服务端_从零开始学SpringBoot之Spring Boot WebSocket:编码分析相关推荐
- SpringBoot+SOCKET服务端客户端
springBoot启动socket服务端 socket服务端简单实现实例 springBoot启动socket服务端 SOCKET服务端启动 SOCKET客户端连接测试 模拟业务处理线程类 模拟监测 ...
- springboot socket服务端_SpringBoot2.x系列教程81--SpringBoot中整合WebSockets
SpringBoot2.x系列教程81--SpringBoot中整合WebSockets 作者:一一哥 一. WebSockets简介 1. 什么是WebSockets WebSocket是HTML5 ...
- springboot内存占用大_小宇宙爆发!Spring Boot 节省95%内存占用
GraalVM[1] 是一种高性能的虚拟机,它可以显著的提高程序的性能和运行效率,非常适合微服务.最近比较火的 Java 框架 Quarkus[2] 默认支持 GraalVM 下图为 Quarkus ...
- springboot自动配置原理_今日份学习之Spring Boot自动配置实现原理
通过前面章节的学习,我们掌握了使用Spring Boot框架进行实际应用开发的方法.在使用Spring Boot 的过程中,我们时常会为一些看似简单,但实际上蕴藏了强大功能的实现而惊呼,下面就让我们来 ...
- 从零开始学java 框架_从零开始学 Java - 搭建 Spring MVC 框架
如果创建一个 Spring 项目 Spring MVC 框架在 Java 的 Web 项目中应该是无人不知的吧,你不会搭建一个 Spring 框架?作为身为一个刚刚学习Java的我都会,如果你不会的话 ...
- Springboot整合socket服务端
使用springboot框架实现socket通信的服务端,接收客户端发来的消息. 随项目启动而启动. package com.socket;import java.io.IOException; im ...
- springboot+netty 服务端
搭建服务端 启动类 在springboot中利用netty替换tomcat,关闭tomcat与banner.添加扫描注解 import org.springframework.boot.Banner; ...
- springboot 实现服务端推送消息
文章目录 前言 一.关于SSE 1. 概念介绍 2. 特点分析 3. 应用场景 二.SpringBoot实现 三.前端vue调用 四.一些问题 前言 服务端推送消息我们采用SSE方式进行推送. 一.关 ...
- 【★更新★】高性能 Windows Socket 服务端与客户端组件(HP-Socket v2.0.1 源代码及测试用例下载)...
HP-Socket 以前为某大型通信项目开发了一套通用 Windows Socket TCP 底层通信组件,组件代号为 HP-Socket.现在把 HP-Socket 的所有代码向大众公开,希望能对大 ...
最新文章
- java创建临时文件夹_如何在Java中创建一个临时目录/文件夹?
- 什么是GDT,LDT,GDTR及LDTR?
- [攻防世界 pwn]——Mary_Morton
- TYVJ 1557 MST+LCA
- 破解SQLSERVER存储过程的加密
- 最优化学习笔记(十九)——拟牛顿法(5)BFGS算法
- python中outside loop_Python入门指引
- git pull 分支问题
- Spring 框架 执行SQL getJdbcTemplate().query update 用法
- InstallShield 2011新功能试用(7)- 新增加的InstallShield Prerequisites
- Android串口示波器,解读一个超赞的开源串口虚拟示波器项目
- 腾讯产品笔试策划+经验​
- 手把手教你如何建立U盘免疫文件夹
- Nginx负载均衡状态值max_fails和fail_timeout
- 大专适合学习php么_学习php有没有学历要求
- key组合按键,长短按键,连续按键 识别方案
- HIT-SCIR/Elmoformanylanguages安装记录
- 案例:5秒后关闭广告 定时器
- MPU9250使用笔记
- 森林救火与计算机相关,无人机森林防火解决方案包含了哪些技术?
热门文章
- Atlas元数据存储模型分析
- MemSQL可以为时间序列应用做些什么
- 腾讯云大数据产品中心总经理刘煜宏:企业全域数据体系建设(附完整PPT)
- 现代c++之列表初始化/统一初始化
- Android MVP
- hive启动mapreduce任务后,被killed
- Hadoop 06_MapReduce2.0(YARN)
- leetcode 658. Find K Closest Elements | 658. 找到 K 个最接近的元素(二分查找+双指针)
- leetcode 191. 位1的个数(移位操作)
- CPU缓存一致性协议MESI - 笔记