1. 概述
本文將創建一個使用 WebSocket 和 Postman 進行測試的應用程序。
2. Java WebSockets
WebSocket 是一種雙向、全雙工、持久的連接,它建立在瀏覽器和服務器之間。一旦 WebSocket 連接建立,該連接將保持開放,直到客户端或服務器決定關閉該連接。
WebSocket 協議是實現應用程序處理實時消息的一種方式。最常見的替代方案是長輪詢和服務器發送事件。每種解決方案都有其優點和缺點。
在 Spring 中使用 WebSockets 的一種方式是使用 STOMP 子協議。然而,在本文中,我們將使用原始 WebSockets,因為截至今天,Postman 中 STOMP 支持不可用。
3. Postman 設置
Postman 是一款用於構建和使用 API 的 API 平台。在使用 Postman 時,我們無需為了測試目的編寫 HTTP 客户端基礎設施代碼。相反,我們創建測試套件,稱為集合,並讓 Postman 與我們的 API 交互。
4. 使用 WebSocket 的應用程序
我們將構建一個簡單的應用程序。 我們的應用程序的工作流程如下:
- 服務器向客户端發送一條一次性消息
- 它向客户端發送週期性消息
- 在接收客户端的消息後,它記錄這些消息並將其發送回客户端
- 客户端向服務器發送非週期性消息
- 客户端接收來自服務器的消息並記錄這些消息
以下是工作流程圖:
5. Spring WebSocket
我們的服務器由兩部分組成:Spring WebSocket 事件處理程序和 Spring WebSocket 配置。 我們將在下面分別討論它們:
5.1. Spring WebSocket 配置
我們可以通過添加 @EnableWebSocket 註解來啓用 Spring 服務器對 WebSocket 的支持。
在相同的配置中,我們還將註冊實現 WebSocket 處理器的 WebSocket 端點:
@Configuration
@EnableWebSocket
public class ServerWebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(webSocketHandler(), "/websocket");
}
@Bean
public WebSocketHandler webSocketHandler() {
return new ServerWebSocketHandler();
}
}5.2. Spring WebSocket 處理程序
該 WebSocket 處理程序類繼承了 <em >TextWebSocketHandler</em >》。<strong >該處理程序使用 <em >handleTextMessage</em >> 回調方法接收來自客户端的消息</strong>。sendMessage> 方法用於將消息發送回客户端:`
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
String request = message.getPayload();
logger.info("Server received: {}", request);
String response = String.format("response from server to '%s'", HtmlUtils.htmlEscape(request));
logger.info("Server sends: {}", response);
session.sendMessage(new TextMessage(response));
}該@Scheduled方法向具有相同sendMessage方法的活躍客户端廣播週期性消息。
@Scheduled(fixedRate = 10000)
void sendPeriodicMessages() throws IOException {
for (WebSocketSession session : sessions) {
if (session.isOpen()) {
String broadcast = "server periodic message " + LocalTime.now();
logger.info("Server sends: {}", broadcast);
session.sendMessage(new TextMessage(broadcast));
}
}
}我們的測試端點將是:
ws://localhost:8080/websocket6. 使用 Postman 進行測試
現在我們的端點已準備就緒,我們可以使用 Postman 進行測試。 要測試 WebSocket,必須安裝 v8.5.0 或更高版本。
在開始使用 Postman 流程之前,, 我們需要啓動我們的服務器。 現在,讓我們繼續。
首先,啓動 Postman 應用程序。 一旦啓動,我們就可以繼續。
在 UI 上加載後,選擇新建:
一個新彈出窗口將會打開。 從那裏 選擇 WebSocket 請求:
我們將 測試一個原始 WebSocket 請求。 屏幕應該看起來像這樣:
現在,讓我們添加我們的 URL。 按下連接按鈕並測試連接:
因此,連接正常工作。 如我們可以在控制枱中看到,我們正在從服務器接收響應。 現在,讓我們嘗試發送消息,服務器將回復:
在測試完成後,只需單擊“斷開連接”按鈕即可斷開連接。
7. 結論
在本文中,我們創建了一個簡單的應用程序來測試 WebSocket 連接,並使用 Postman 進行測試。