91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
璧山县| 洪江市| 深水埗区| 庄河市| 富川| 营山县| 霞浦县| 镇江市| 措美县| 濉溪县| 都兰县| 涟源市| 嵩明县| 闵行区| 定兴县| 邵东县| 白沙| 全椒县| 青浦区| 万安县| 湘西| 手游| 五寨县| 介休市| 尼勒克县| 清流县| 凉山| 大方县| 石阡县| 陆川县| 灵川县| 江孜县| 南陵县| 观塘区| 永胜县| 铜陵市| 壤塘县| 庆云县| 旬阳县| 寿宁县| 县级市|