SpringBoot整合websocket实现群聊,JavaScript命名标识符规范

使用springboot 2.3.10.RELEASE版本;java8

WebSocketConfig配置类

@Configuration

public class WebSocketConfig

{

@Bean

public ServerEndpointExporter serverEndpointExporter()  {

return new ServerEndpointExporter();

}

}

websocket有4个注解,解释如下

  • @OnOpen 有新连接

  • @OnMessage 有新消息时

  • @OnClose 关闭连接

  • @OnError 连接异常

对于这个4个注解,配置在方法上即可。

WebsocketServerEndpoint接收类

@Slf4j

@Controller

@ServerEndpoint (“/”)

public class WebsocketServerEndpoint

{

@OnOpen

public void onOpen(Session session, EndpointConfig config) {

log.info(“[onOpen][session({}) 接入]”, session);

WebSocketUtil.broadcast (session.getId ()+“上线了”);

WebSocketUtil.addSession (session);

}

@OnMessage

public void onMessage(Session session, String message) {

WebSocketUtil.broadcast (message);

log.info(“[onOpen][session({}) 接收到一条消息({})]”, session, message); // 生产环境下,请设置成 debug 级别

}

@OnClose

public void onClose(Session session, CloseReason closeReason) {

WebSocketUtil.removeSession (session);

WebSocketUtil.broadcast (session.getId ()+“下线了”);

log.info(“[onClose][session({}) 连接关闭。关闭原因是({})}]”, session, closeReason);

}

@OnError

public void onError(Session session, Throwable throwable) {

log.info(“[onClose][session({}) 发生异常]”, session, throwable);

}

}

WebSocketUtil工具类。

@Slf4j

public class WebSocketUtil

{

// ========== 会话相关 ==========

/**

* Session 与用户的映射

*/

private static final Map<String, Session> SESSION_USER_MAP = new ConcurrentHashMap<> ();

/**

* 添加 Session 。在这个方法中,会添加用户和 Session 之间的映射

* @param session Session

*/

public static void addSession(Session session) {

// 更新 SESSION_USER_MAP

SESSION_USER_MAP.put(session.getId (), session);

}

/**

* 移除 Session 。

* @param session Session

*/

public static void removeSession(Session session) {

// 从 SESSION_USER_MAP 中移除

SESSION_USER_MAP.remove(session.getId ());

}

// ========== 消息相关 ==========

/**

* 广播发送消息给所有在线用户

* @param message 消息体

* @param  消息类型

*/

public static  void broadcast(String message) {

// 创建消息

//        String messageText = buildTextMessage(type, message);

// 遍历 SESSION_USER_MAP ,进行逐个发送

for (String sessionId : SESSION_USER_MAP.keySet()) {

sendTextMessage(SESSION_USER_MAP.get (sessionId), message);

}

}

/**

* 发送消息给单个用户的 Session

* @param session Session

* @param type 消息类型

* @param message 消息体

* @param  消息类型

*/

public static  void send(Session session, String type, T message) {

// 创建消息

String messageText = buildTextMessage(type, message);

// 遍历给单个 Session ,进行逐个发送

sendTextMessage(session, messageText);

}

/**

* 构建完整的消息

* @param type 消息类型

* @param message 消息体

* @param  消息类型

* @return 消息

*/

private static  String buildTextMessage(String type, T message) {

JSONObject messageObject = new JSONObject();

messageObject.put(“type”, type);

messageObject.put(“body”, message);

return messageObject.toString();

}

/**

* 真正发送消息

* @param session Session

* @param messageText 消息

*/

private static void sendTextMessage(Session session, String messageText) {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

一个好的心态和一个坚持的心很重要,很多冲着高薪的人想学习前端,但是能学到最后的没有几个,遇到困难就放弃了,这种人到处都是,就是因为有的东西难,所以他的回报才很大,我们评判一个前端开发者是什么水平,就是他解决问题的能力有多强。

分享一些简单的前端面试题以及学习路线给大家,狂戳这里即可免费领取

可以扫码获取!!(备注:前端)**

最后

一个好的心态和一个坚持的心很重要,很多冲着高薪的人想学习前端,但是能学到最后的没有几个,遇到困难就放弃了,这种人到处都是,就是因为有的东西难,所以他的回报才很大,我们评判一个前端开发者是什么水平,就是他解决问题的能力有多强。

分享一些简单的前端面试题以及学习路线给大家,狂戳这里即可免费领取

[外链图片转存中…(img-OdrpF0i3-1712207307598)]

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot是一个用于快速构建基于Spring框架的Java应用程序的开源框架。它简化了Spring应用程序的开发过程,并提供了许多内置的功能和插件,使得开发人员可以更加专注于业务逻辑的实现WebSocket是一种在Web浏览器和Web服务器之间建立持久连接的通信协议,能够实现实时双向通信。 要实现聊天软件的功能,可以使用Spring Boot来快速搭建项目结构和配置。首先,需要在pom.xml文件中添加WebSocket的依赖,例如使用SpringSpring WebSocket库: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` 然后,需要创建一个WebSocket配置配置WebSocket的相关信息,例如定义访问WebSocket的端点、配置消息传输方式等。可以继承Spring提供的AbstractWebSocketMessageBrokerConfigurer,并重写相关方法: ```java @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/chat").withSockJS(); } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.enableSimpleBroker("/topic"); registry.setApplicationDestinationPrefixes("/app"); } } ``` 在上述配置中,使用"/chat"作为WebSocket的端点,并启用了基于内存的消息代理(SimpleBroker),其中"/topic"为消息主题的前缀,"/app"为应用程序请求的前缀。 接下来,可以创建一个WebSocket处理器来处理WebSocket的连接、关闭和消息等事件。可以实现SpringWebSocketHandler接口,并重写相关方法: ```java @Component public class ChatHandler extends TextWebSocketHandler { private static final List<WebSocketSession> sessions = new ArrayList<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { sessions.add(session); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { sessions.remove(session); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { for (WebSocketSession s : sessions) { s.sendMessage(message); } } } ``` 上述处理器中,使用一个静态List来保存所有连接的WebSocketSession,以便将消息发送给所有已连接的客户端。 最后,在需要使用WebSocket的控制器或服务中,可以使用@Autowired注解将ChatHandler注入,并使用它来发送消息。 总结来说,通过以上的步骤,我们可以使用Spring Boot整合WebSocket实现聊天软件的功能。当有新的WebSocket连接建立时,我们将其保存在一个静态List中,并在收到消息时将消息发送给所有的连接。通过Spring Boot的简化开发流程和WebSocket的实时双向通信特性,实现了一个简单的聊天软件。 ### 回答2: Spring Boot是一个用于开发Java应用程序的框架,它能够帮助开发人员更快速、更简洁地构建应用程序。WebSocket是HTML5新增的一种协议,它能够在客户端与服务器之间建立持久的双向通信连接,实时地传输数据。 要实现聊天软件的功能,首先需要导入Spring BootWebSocket的相关依赖。在pom.xml文件中添加Spring BootWebSocket的依赖项。 在Spring Boot的主中,使用@EnableWebSocket注解启用WebSocket的支持。编写一个WebSocket处理器,继承自TextWebSocketHandler,并重写其中的方法。在onTextMessage方法中处理接收到的文本消息,在sendMessage方法中处理发送消息。 配置WebSocket的映射路径和处理器,使用@Configuration注解和实现WebSocketConfigurer接口。重写registerWebSocketHandlers方法,设置WebSocket的映射路径和处理器。 在前端界面中,使用JavaScript代码连接WebSocket服务器,并处理接收消息和发送消息的逻辑。通过WebSocket对象的onmessage方法处理接收到的消息,并将消息显示在聊天界面上。通过WebSocket对象的send方法发送消息给服务器。 通过以上步骤,就可以实现Spring BootWebSocket整合,从而实现聊天软件的功能。开发人员可以根据具体的需求,进一步完善聊天软件的功能,例如用户名的验证、消息的存储和管理等。 总结起来,使用Spring BootWebSocket可以快速、简洁地实现聊天软件。借助Spring Boot的开发效率和WebSocket的实时通信功能,开发人员能够轻松地构建出高效、稳定的聊天软件。 ### 回答3: Spring Boot 是一个基于 Spring 框架的开源服务端开发框架,提供了快速开发和方便部署的特性。WebSocket 是一种基于TCP协议的双向通信协议,通过浏览器与服务器建立持久连接,实现实时通信。 使用 Spring Boot 整合 WebSocket 实现聊天软件的步骤如下: 1. 创建一个 Spring Boot 项目,引入 WebSocket 依赖包。 2. 在配置上添加 `@EnableWebSocket` 注解以启用 WebSocket 功能。 3. 创建一个 WebSocket 处理器,继承自 `TextWebSocketHandler`,覆写其中的方法,如 `handleTextMessage()` 和 `afterConnectionEstablished()`。 4. 在 `handleTextMessage()` 方法中,获取客户端发送的消息,处理后将消息发送给所有连接到服务器的客户端。 5. 在 `afterConnectionEstablished()` 方法中,可以处理客户端连接成功后的逻辑。 6. 创建一个控制器,处理客户端与服务器的交互,如发送消息、接收消息等。 7. 在控制器中,使用 `@Autowired` 注入 WebSocket 处理器的对象,并通过该对象发送消息给客户端。 8. 在前端页面中使用 JavaScript 创建 WebSocket 连接,并实现相应的回调函数,实现与服务器的实时通信。 通过以上步骤,可以实现一个简单的聊天软件。用户在页面上发送消息,消息通过 WebSocket 连接发送到服务器,服务器将消息广播给所有客户端,实现实时聊天的功能。 总之,借助 Spring Boot 提供的便利性和 WebSocket 协议的实时通信特性,可以快速实现一个聊天软件。不仅可以在浏览器上实现聊天功能,还可以通过移动端等其他客户端实现跨平台的聊天应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值