WebSocket的那些事(2-实操篇)

这篇具有很好参考价值的文章主要介绍了WebSocket的那些事(2-实操篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述

在上一节 WebSocket的那些事(1-概念篇)中我们简单的介绍了关于WebSocket协议的相关概念、与HTTP的联系区别等等。

这一节将会带来WebSocket的实操环节,主要包括Spring本身提供的WebSocket API以及对STOMP协议的支持。


二、Websocket API

1、引入相关依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

2、配置WebSocket处理器

这里我们创建了简单的EchoWebsocketHandler ,会原封不动返回来自客户端的消息。

@Slf4j
public class EchoWebsocketHandler extends TextWebSocketHandler {

	@Override
	protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
		String content = new String(message.asBytes(), StandardCharsets.UTF_8);

		log.info("WebSocket message received: {}", content);
		session.sendMessage(message);
	}

	@Override
	public void afterConnectionEstablished(WebSocketSession session) throws Exception {
		log.info("Connection established, request uri:{}", session.getUri());
	}

	@Override
	public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
		log.info("Connection closed, request uri:{}", session.getUri());
	}
}

3、WebSocket配置

@Configuration
@EnableWebSocket
public class WebsocketConfig implements WebSocketConfigurer {

	@Override
	public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
		// HttpSessionHandshakeInterceptor可以将HttpSession中的属性转换为WebsocketSession的属性
		registry.addHandler(new EchoWebsocketHandler(), "/echo")
			.addInterceptors(new HttpSessionHandshakeInterceptor());
	}

	@Bean
	public ServletServerContainerFactoryBean createWebSocketContainer() {
		ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
		// 指定单次最大可传输的文本消息大小为4 * 1024字符
		container.setMaxTextMessageBufferSize(4 * 1024);
		// 指定单次最大可传输的二进制消息大小为8 * 1024字节
		container.setMaxBinaryMessageBufferSize(8 * 1024);
		return container;
	}
}

4、测试

直接启动项目,打开Postman,输入 ws://localhost:8080/echo ,如下:
WebSocket的那些事(2-实操篇)
点击连接后,显示连接成功,直接发送消息即可。可以看到,客户端发什么,服务端就响应什么。
WebSocket的那些事(2-实操篇)


三、总结

使用原生Websocket会有一些缺点,我们总结一下:

  • 兼容性问题:Websocket是HTML5标准中新增的技术,并不是所有浏览器都支持该技术。
  • 连接维持问题:WebSocket连接是一直保持开放状态的,因此会占用一定的带宽和资源。如果连接数量过多或者连接持续时间过长,可能会对服务器造成一定的压力。
  • 安全问题:WebSocket连接的开放性可能会引起一些安全问题,例如未经授权的用户访问WebSocket服务、数据被劫持等。
  • 服务端实现问题:由于消息内容并没有传输标准,无法对消息进行路由和处理。

下篇文章我们将会结合SockJSSTOMP来实现WebSocket消息传输。

WebSocket的那些事(2-实操篇)文章来源地址https://www.toymoban.com/news/detail-438428.html

到了这里,关于WebSocket的那些事(2-实操篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux(实操篇一)

    Shell 可以看作是一个命令解释器,为我们提供了交互式的文本控制台界面。我们可以 通过终端控制台来输入命令,由 shell 进行解释并最终交给内核执行。 1.1 帮助命令 1.1.1 man获得帮助信息 基本语法 man [命令或配置文件] 功能描述:获得帮助信息 显示说明 NAME:命令的名称和

    2024年02月11日
    浏览(28)
  • Linux(实操篇二)

    1.3 时间日期类 基本语法 date [OPTION]… [+FORMAT] 选项说明 -d时间字符串 显示指定的“时间字符串”表示的时间,而非当前时间 -s日期时间 设置系统日期时间 参数说明 +日期时间格式 指定显示时使用的日期时间格式 1.3.1 date显示当前时间 基本语法 (1)date 功能描述:显示当前时

    2024年02月11日
    浏览(33)
  • Linux 实操篇--定时任务调度

    crontab 进行定时任务的设置 概述 任务调度:是指系统在某个时间执行的特定的命令或程序。 任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等 个别用户工作:个别用户可能希望执行某些程序,比如对mysql 数据库的备份。 示意图 基本语法 cron

    2024年02月07日
    浏览(42)
  • 9 Linux实操篇-实用指令

    学习视频来自于B站【小白入门 通俗易懂】2021韩顺平 一周学会Linux。 可能会用到的资料有如下所示,下载链接见文末: 《鸟哥的Linux私房菜 基础学习篇 第四版》 1 《鸟哥的Linux私房菜 服务器架设篇 第三版》 2 《韩顺平_2021图解Linux全面升级》 3 本章将介绍在Linux会大量使用的

    2024年02月15日
    浏览(31)
  • flowable工作流--实操篇

    本文通过申请发工资的业务场景来介绍使用工作流的全流程,包括画流程图,设置属性,以及代码编写 使用工作流大致分为四步 第一步:根据自己的业务画好流程图 第二步:设置流程图的属性和变量,保存模型 第三步:部署画好的流程图(发布) 第四步:根据业务和流程图写一些服务和

    2024年02月11日
    浏览(43)
  • 【linux】linux实操篇之任务调度

    我们常用linux做一些定时任务,最常见的就是在服务器领域,我们常常做一些定时任务来定时执行一些脚本,那么接下来我们就来看看linux中的任务调度相关知识以及一些案例吧! 用 crontab 进行定时任务的设置 概述 任务调度:是指系统在某个时间执行的特定的命令或程序。

    2024年02月02日
    浏览(28)
  • Linux—实操篇:远程登录到linux服务器

    远程登录客户端工具有 Xshell7(远程登录),Xftp7(文件传输) ,这里介绍Xshell和Xftp,其他的远程工具大同小异 介绍: Xshell是目前最好的远程登录到Linux的软件,流畅的速度并且完美解决了中文乱码的问题。 1.1、下载-安装 下载free-for-home-school版本 地址: :https://www.netsarang.com/e

    2024年02月06日
    浏览(34)
  • Linux【实操篇】—— Shell 编程入门、变量、运算符、条件判断、流程控制

    目录 一、Shell 编程入门 1. 认识 Shell 2. Shell 脚本的创建与执行         二、Shell 变量 1. 系统变量和自定义变量 2. 变量的基本规则 3. 设置环境变量 4. 位置参数变量 5. 预定义变量 三、运算符 四、条件判断 五、流程控制 1. if 语句 2. case 语句 3. for 循环 4. while 循环 六、rea

    2024年02月03日
    浏览(28)
  • Haydn解决方案数字化平台助力架构师1小时完成架构设计(实操篇)

    如何基于Haydn快速完成几种常用集成架构的设计? 如何基于Haydn快速完成几种常用部署架构的设计? 如何基于Haydn高效分享架构设计? 设计器的使用有哪些小Tips? 1. Haydn解决方案数字化平台介绍 2. Haydn设计中心几种风格图元库的切换使用 3. 如何基于Haydn设计中心快速完成几种

    2024年02月03日
    浏览(39)
  • 【树莓派Linux内核开发】入门实操篇(虚拟机Ubuntu环境搭建+内核源码获取与配置+内核交叉编译+内核镜像挂载)

    1.ubuntu18.04镜像下载 打开ubuntu18.04镜像传送门,进入到主页 往下滑,找到相应镜像并下载 等待镜像下载完毕即可 2.VMware软件安装 VMware是一款 运行在windows系统上的虚拟机软件 ,可以虚拟出一台计算机硬件,方便安装各类操作系统 进入VMware官网传送门,来到主页,往下滑,选

    2024年04月29日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包