使用Postman测试WebSocket API

2023/05/12

1. 概述

在本文中,我们将使用WebSocket创建一个应用程序并使用Postman对其进行测试。

2. Java WebSockets

WebSocket是Web浏览器和服务器之间的双向、全双工、持久连接。一旦建立了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处理程序类扩展了TextWebSocketHandler。此处理程序使用handleTextMessage回调方法从客户端接收消息。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/websocket

6. Postman测试

现在我们的端点已准备就绪,我们可以使用Postman对其进行测试。要测试WebSocket,我们必须有v8.5.0或更高版本

在开始使用Postman之前,我们将运行我们的服务器。现在让我们继续。

首先,启动Postman应用程序。一旦开始,我们就可以继续。

从UI加载后,选择”New“:

将打开一个新的弹出窗口。从那里选择WebSocket Request

我们将测试一个原始的WebSocket请求。屏幕应如下所示:

现在让我们添加我们的URL。按Connect按钮并测试连接:

因此,连接工作正常。正如我们从控制台中看到的那样,我们正在从服务器获取响应。让我们现在尝试发送消息,服务器将响应:

测试完成后,我们只需单击“Disconnect”按钮即可断开连接。

7. 总结

在本文中,我们创建了一个简单的应用程序来测试与WebSocket的连接,并使用Postman对其进行了测试。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章