是否可以使用 k6 框架测试 graphql 订阅?
我尝试这样做,但没有取得太大成功。还尝试使用 k6 websockets 来做到这一点,但没有帮助。
谢谢
Grapqhql Subscription
是基于Websockets
所以理论上可以使用 k6 WebSocket 来实现。
您也可以参考订阅文档here https://github.com/enisdenjo/graphql-ws/blob/master/PROTOCOL.md。
您还可以使用开发人员工具中的 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,
},
})
);
});
}
);
}
希望这可以帮助! ????
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)