load-testing - 使用 k6 测试 graphql 订阅

标签 load-testing k6

是否可以使用 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/

相关文章:

asp.net - 如何对 ASP.NET 应用程序进行负载测试?

testing - 使用loadrunner同时运行两个场景

docker - K6 InfluxDB + Grafana Docker:如何预加载仪表板

javascript - 如何获取从文件导入javascript的路径

javascript - JWT 与 k6 签约

javascript - 使用 K6 进行 JWT token 身份验证

jmeter - 使用 jmeter 进行 Web 压力和负载测试 - 好到什么程度?基准指南?

javascript - 在为 Web 性能测试打开的 Visual Studio 浏览器中启用 JavaScript

node.js - 负载测试的 GUID 是什么

javascript - 使用正则表达式仅解析 id