当前位置: 首页 > news >正文

app开发公司 无冬/宁波seo网站服务

app开发公司 无冬,宁波seo网站服务,西宁网络公司哪家好,古风ppt模板前言本文中搭建了一个简易的多人聊天室,使用了WebSocket的基础特性。源代码来自老外的一篇好文:https://www.callicoder.com/spring-boot-websocket-chat-example/本文内容摘要:初步理解WebSocket的前后端交互逻辑手把手使用 SpringBoot Web…
dc3da7b122bddf2e590ba5e5b0fa7efc.png

前言

本文中搭建了一个简易的多人聊天室,使用了WebSocket的基础特性。

源代码来自老外的一篇好文:

https://www.callicoder.com/spring-boot-websocket-chat-example/

本文内容摘要:

  • 初步理解WebSocket的前后端交互逻辑
  • 手把手使用 SpringBoot + WebSocket 搭建一个多人聊天室Demo
  • 代码源码及其解释
  • 前端展示页面
8878b5b5cbd92fb9abf4d9e66d67e291.gif

此外,在下一篇文章中,我们将做到:

  • 对该WebSocket聊天室进行分布式改造,同时部署多台机器来作为集群,支撑高并发。
  • 保存用户session,并且在集群上实现session同步,比如实时展示当前在线的用户!

正文

WebSocket多人在线聊天室

本文工程源代码:

https://github.com/qqxx6661/springboot-websocket-demo

新建工程

我们新建一个SpringBoot2的项目工程,在默认依赖中,添加websocket依赖:

org.springframework.boot spring-boot-starter-websocket

WebSocket 配置

我们先来设置websocket的配置,新建config文件夹,在里面新建类WebSocketConfig

import org.springframework.context.annotation.Configuration;import org.springframework.messaging.simp.config.MessageBrokerRegistry;import org.springframework.web.socket.config.annotation.*;@Configuration@EnableWebSocketMessageBrokerpublic class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/ws").withSockJS(); } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.setApplicationDestinationPrefixes("/app"); registry.enableSimpleBroker("/topic"); }}

代码解释:

@EnableWebSocketMessageBroker用于启用我们的WebSocket服务器。

我们实现了WebSocketMessageBrokerConfigurer接口,并实现了其中的方法。

在第一种方法中,我们注册一个websocket端点,客户端将使用它连接到我们的websocket服务器。

withSockJS()是用来为不支持websocket的浏览器启用后备选项,使用了SockJS。

方法名中的STOMP是来自Spring框架STOMP实现。 STOMP代表简单文本导向的消息传递协议。它是一种消息传递协议,用于定义数据交换的格式和规则。为啥我们需要这个东西?因为WebSocket只是一种通信协议。它没有定义诸如以下内容:如何仅向订阅特定主题的用户发送消息,或者如何向特定用户发送消息。我们需要STOMP来实现这些功能。

在configureMessageBroker方法中,我们配置一个消息代理,用于将消息从一个客户端路由到另一个客户端。

第一行定义了以“/app”开头的消息应该路由到消息处理方法(之后会定义这个方法)。

第二行定义了以“/topic”开头的消息应该路由到消息代理。消息代理向订阅特定主题的所有连接客户端广播消息。

在上面的示例中,我们使用的是内存中的消息代理。

之后也可以使用RabbitMQ或ActiveMQ等其他消息代理。

创建 ChatMessage 实体

ChatMessage用来在客户端和服务端中交互

我们新建model文件夹,创建实体类ChatMessage。

public class ChatMessage { private MessageType type; private String content; private String sender; public enum MessageType { CHAT, JOIN, LEAVE } public MessageType getType() { return type; } public void setType(MessageType type) { this.type = type; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getSender() { return sender; } public void setSender(String sender) { this.sender = sender; }}

实体中,有三个字段:

  • type:消息类型
  • content:消息内容
  • sender:发送者

类型有三种:

  • CHAT: 消息
  • JOIN:加入
  • LEAVE:离开

创建Controller来接收和发送消息

创建controller文件夹,在controller文件夹添加类ChatController

import com.example.websocketdemo.model.ChatMessage;import org.springframework.messaging.handler.annotation.MessageMapping;import org.springframework.messaging.handler.annotation.Payload;import org.springframework.messaging.handler.annotation.SendTo;import org.springframework.messaging.simp.SimpMessageHeaderAccessor;import org.springframework.stereotype.Controller;@Controllerpublic class ChatController { @MessageMapping("/chat.sendMessage") @SendTo("/topic/public") public ChatMessage sendMessage(@Payload ChatMessage chatMessage) { return chatMessage; } @MessageMapping("/chat.addUser") @SendTo("/topic/public") public ChatMessage addUser(@Payload ChatMessage chatMessage,  SimpMessageHeaderAccessor headerAccessor) { // Add username in web socket session headerAccessor.getSessionAttributes().put("username
http://www.jmfq.cn/news/5136391.html

相关文章:

  • 西安做网站价格/优化网站
  • 查看最新疫情石家庄/网络seo推广培训
  • 个人网站导航模版/18款禁用网站app直播
  • 好的域名 org 网站/sem优化是什么
  • 网站建设过程中的通用原则/个人网站的制作模板
  • 建一个手机网站需要多少钱/长沙seo排名公司
  • 如何选择合肥网站建设/上海公布最新情况
  • 网站已改版/好看的友情链接代码
  • 开个做网站要多少钱/如何建网站教程
  • 郑州专业旅游网站建设/网址域名大全
  • iis wordpress 多站点/北京seo业务员
  • 南宁网站制/直播营销策略有哪些
  • 网站建设项目创业计划书/百度客服怎么转人工
  • 山东生猪价格今日猪价/电商网站seo优化
  • 英文版wordpress/天津seo托管
  • 糗事百科网站模板/平台关键词排名优化
  • 嘉兴做网站/链接提取视频的网站
  • 自学考试网站建设与管理/做网络推广的公司
  • 高端定制网站公司哪家好/一个企业该如何进行网络营销
  • 做彩票生意要登陆哪个网站/哪里的网络推广培训好
  • 做网站都需要买什么问题/网络推广的平台
  • 医院做网站运维/正规接单赚佣金的app
  • 免费做网站靠谱么/地推网推平台
  • 教师个人网站建设/南京seo公司
  • xyz域名做网站好么/seo综合查询怎么进入网站
  • 新疆维吾尔自治区建设厅官方网站/百度实名认证
  • 怎么通过域名做网站/外贸推广建站
  • 做微网站多少钱/学生个人网页制作成品
  • 临汾做网站公司/网络营销策略的制定
  • 企业自建网站有哪些/百度指数查询移动版