亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

SpringBoot怎么實現點對點發送消息

小億
136
2024-01-29 09:47:43
欄目: 編程語言

在Spring Boot中,可以使用WebSocket實現點對點發送消息。WebSocket是一種在單個TCP連接上進行全雙工通信的協議,它可以在Web瀏覽器和服務器之間建立一個持久連接,使得服務器可以主動向客戶端推送數據。

以下是使用Spring Boot實現點對點發送消息的步驟:

  1. 添加WebSocket依賴:在pom.xml文件中添加以下依賴:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
  1. 創建WebSocket配置類:創建一個配置類,用于配置WebSocket相關的信息。示例代碼如下:
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new WebSocketHandler(), "/ws").setAllowedOrigins("*");
    }
}

上述示例代碼中,WebSocketHandler()是自定義的WebSocket處理器,/ws是WebSocket的端點路徑。

  1. 創建WebSocket處理器:創建一個自定義的WebSocket處理器,用于處理WebSocket連接的建立、關閉和消息的發送。示例代碼如下:
public class WebSocketHandler extends TextWebSocketHandler {

    private static final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        sessions.add(session);
    }

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        // 處理收到的消息
        for (WebSocketSession s : sessions) {
            s.sendMessage(message);
        }
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        sessions.remove(session);
    }
}

上述示例代碼中,afterConnectionEstablished()方法在WebSocket連接建立時調用,handleTextMessage()方法用于處理收到的文本消息,afterConnectionClosed()方法在WebSocket連接關閉時調用。

  1. 創建Controller類:創建一個Controller類,用于處理與WebSocket相關的請求。示例代碼如下:
@RestController
@RequestMapping("/api")
public class MessageController {

    @Autowired
    private SimpMessagingTemplate messagingTemplate;

    @PostMapping("/send/{userId}")
    public void sendMessage(@PathVariable("userId") String userId, @RequestBody String message) {
        messagingTemplate.convertAndSendToUser(userId, "/ws", message);
    }
}

上述示例代碼中,sendMessage()方法用于發送消息到指定的WebSocket連接。

至此,點對點發送消息的實現就完成了。你可以通過向/api/send/{userId}發送POST請求,傳遞userIdmessage參數來發送消息。

請注意,上述示例只是演示了基本的點對點發送消息的實現方式。在實際應用中,你可能需要根據具體的需求進行進一步的開發和優化。

0
通海县| 彭山县| 西充县| 祁门县| 纳雍县| 天津市| 深水埗区| 开远市| 余干县| 临武县| 通许县| 石城县| 六枝特区| 嘉兴市| 丰都县| 巨鹿县| 枣阳市| 资兴市| 巴青县| 阜平县| 高淳县| 伊金霍洛旗| 鸡东县| 鸡西市| 策勒县| 万山特区| 临清市| 缙云县| 哈尔滨市| 塘沽区| 宾阳县| 项城市| 河北省| 连平县| 如皋市| 双柏县| 牡丹江市| 玛多县| 庆安县| 丽江市| 山阳县|