是否可以使用 k6 框架测试 graphql 订阅? 我尝试这样做,但没有取得多大成功。也尝试用 k6 websockets 来做,但没有帮助。 谢谢
最佳答案
Grapqhql Subscription
基于 Websockets
所以理论上可以使用 k6 WebSocket 实现。
订阅也可以引用文档here . 您还可以使用开发人员工具中的 playground 和 Networks 选项卡来确定发送到服务器的消息/请求。
我是这样实现的:
import ws from "k6/ws";
export default function(){
const url = "ws://localhost:4000/graphql" // replace with your url
const token = null; // replace with your auth token
const operation = `
subscription PostFeed {
postCreated {
author
comment
}
}` // replace with your subscription
const headers = {
"Sec-WebSocket-Protocol": "graphql-ws",
};
if (token != null) Object.assign(headers,{ Authorization: `Bearer ${token}`});
ws.connect(
url,
{
headers,
},
(socket) => {
socket.on("message", (msg) => {
const message = JSON.parse(msg);
if (message.type == "connection_ack")
console.log("Connection Established with WebSocket");
if (message.type == "data") console.log(`Message Received: ${message}`)
});
socket.on("open", () => {
socket.send(
JSON.stringify({
type: "connection_init",
payload: headers,
})
);
socket.send(
JSON.stringify({
type: "start",
payload: {
query: operation,
},
})
);
});
}
);
}
希望对您有所帮助! 🍻
关于load-testing - 使用 k6 测试 graphql 订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66410400/