使用Java WebSocket实现双向通信的实例

原创 电玩女神 2024-10-09 22:24 114阅读 0赞

以下是一个简单的Java WebSocket实现双向通信的例子。这个例子使用了Java Websocket API和Spring Boot框架。

首先,我们需要创建一个WebSocket服务类:

  1. import org.springframework.web.socket.TextMessage;
  2. import org.springframework.web.socket.WebSocketSession;
  3. import java.io.IOException;
  4. public class WebSocketService {
  5. public void sendMessage(WebSocketSession session, String message) {
  6. try {
  7. session.getAsyncRemote().sendText(message);
  8. } catch (IOException e) {
  9. e.printStackTrace();
  10. }
  11. }
  12. // 当连接关闭时,我们调用此方法
  13. public void onConnectClose(WebSocketSession session) {
  14. System.out.println("Connection closed: " + session.getId());
  15. }
  16. }

然后,在Spring Boot的配置类中配置WebSocket服务器:

  1. import org.springframework.context.annotation.Configuration;
  2. import org.springframework.web.socket.config.EnableWebSocketMessageBroker;
  3. @Configuration
  4. @EnableWebSocketMessageBroker
  5. public class WebSocketConfig {
  6. // 设置消息中间件类型,这里设置为"topic"
  7. @Bean
  8. public MessageBrokerConfiguration messageBrokerConfig() {
  9. MessageBrokerConfiguration config = new MessageBrokerConfiguration();
  10. config.setMessageBrokerType(MessageBrokerTypes.TOPIC);
  11. return config;
  12. }
  13. // 自定义连接关闭处理器
  14. @Bean
  15. public WebSocketServiceContainer postConnectCloseProcessor() {
  16. WebSocketServiceContainer processor = new WebSocketServiceContainer();
  17. processor.addWebSocketService(new WebSocketService());
  18. processor.getServices().forEach(service -> {
  19. if (service instanceof WebSocketService) {
  20. ((WebSocketService) service).setOnConnectCloseListener(processor::handleOnConnectClose));
  21. }
  22. }));
  23. return processor;
  24. }
  25. // 自定义连接关闭处理器处理逻辑
  26. private void handleOnConnectClose(WebSocketSession session) {
  27. System.out.println("Connection closed with reason: " + session.getAsyncRemote().sendText(session.getId() + " - Reason: Closed manually")) + "\nSession ID: " + session.getId());
  28. }
  29. }

这个例子中,当一个客户端连接到WebSocket服务器时,服务器会调用onConnectClose方法处理连接关闭事件。同时,你也可以在handleOnConnectClose方法中添加你的业务逻辑。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,114人围观)

还没有评论,来说两句吧...

相关阅读

    相关 使用webSocket实现及时通信

    本方案是为了解决前后台及时通信设计的,例如后台代码触发一个事件,可以及时的传递给前台,也就是消息的推送功能. 关于消息的推送,方案1是使用定时任务,Cron表达式设置每分钟