测试接口
WebSocket 接口提供一个测试方法,客户端可以通过向测试地址 /test
发送一个WsTestReq
结构的消息,可触发服务端向相关的队列推送消息,以便测试。
WebSocket客户端可以使用本方法来测试连接,或测试自己的websocket消息业务处理逻辑。
使用方法和过程
- 用Stomp客户端连接 /v1/ws 端点
- 订阅所要测试的列队
- 向
/test
测试地址发送一个WsTestReq
消息。 - 服务端收到
WsTestReq
消息后,将WsTestReq
消息中的msg
字符串的内容原样推送到/user/{token}/queue/{queue}
其中 token 为登录 token,queue 为由 WsTestReq.queue 指定的名称 - 客户端订阅的指定队列收到服务端的推送消息
WsTestReq 结构
属性 | 数据类型 | 必要 | 说明 |
---|---|---|---|
queue | string | Y | 队列名。服务最终推送的队列名为:/user/{token}/queue/{queue} |
msg | string | Y | 所要推送的消息的内容。 |
示例
/**
* 发送到 `/test` 测试地址的消息体
*/
class WsTestReq {
/**
* 队列名
* @type string
*/
queue;
/**
* 要服务端推到 `queue` 属性定义的队列的消息内容。
* @type string
*/
msg;
/**
*
* @param {string} queueName
* @param {Object | string} payload
*/
constructor(queueName, payload) {
this.queue = queueName;
if (payload instanceof String)
this.msg = payload;
else
this.msg = JSON.stringify(payload);
}
}
/**
* 本结构用户可以自定义,此结构的内容将在 JSON.stringify 后作为 WsTestReq.msg 的内容,在 WsTestReq 发送到 `/test` 测试地址后,服务端会
* 将本结构的内容原样推送到 `/user/{token}/queue/{queue}`,其中 token 为登录 token,queue 为由 WsTestReq.queue 指定的名称。
*/
class WsConnTestPayload {
/**
* 自定义此结构的内容
*/
// ...
}
// 订阅 mytest 队列
this.stomp.subscribe("/user/LoDpxsejQxCIeZHE83iMSA/queue/mytest", (frame) => {
/**
*
* @type {WsConnTestPayload}
*/
const connTestReq = JSON.parse(frame.body);
// 对发到的消息进行处理
// ...
});
// 测试时
const reqId = crypto.randomUUID();
const payload = new WsConnTestPayload();
payload.reqId = reqId;
const req = new WsTestReq("mytest", payload);
// 将消息发送到 `/test` 测试地址
this.stomp.send("/test", null, JSON.stringify(req));