带有 WebSocket 的原始 javascript GraphQL 订阅无法正常工作
Raw javascript GraphQL subscription with WebSocket not working
我正在尝试创建一段原始代码来监听 graphQL 订阅,但由于某些原因我无法使其工作。
我正在尝试模仿从 GraphQL 控制台发送的原始请求,您可以在此处看到
看起来很简单。所以我做了以下 javascript 代码:
const WebSocket = require("ws");
const connection = new WebSocket("ws://localhost:4000/graphql")
connection.onopen = () => {
console.log("connection open")
let init = JSON.stringify({type:"connection_init",payload:{Authorization:"Bearer eyJhbG.....HIDDEN....dDgw"}})
let listen = JSON.stringify({"id":"1","type":"start","payload":{"variables":{},"extensions":{},"operationName":null,"query":"subscription {\n followJob(idJob: \"ck0pa2r8r8pit0b17f3k6s729\") {\n progress\n }\n}\n"}})
connection.send(init)
connection.send(listen)
}
connection.onmessage = e => {
console.log("data coming")
console.log(e.data)
}
connection.onerror = e =>{
console.log(e)
}
(function wait () {
setTimeout(wait, 1000000);
})();
GraphQL 服务器确实收到了请求,并且具有与从控制台发出的请求完全相同的消息数据,但由于某些原因,它在那之后不处理查询,不会在日志中抛出任何错误或消息...
你知道我可能遗漏了什么吗?
非常感谢您的帮助。
只需像这样指定 websocket 协议
const connection = new WebSocket("ws://localhost:4000/graphql","graphql-ws")
我正在尝试创建一段原始代码来监听 graphQL 订阅,但由于某些原因我无法使其工作。
我正在尝试模仿从 GraphQL 控制台发送的原始请求,您可以在此处看到
看起来很简单。所以我做了以下 javascript 代码:
const WebSocket = require("ws");
const connection = new WebSocket("ws://localhost:4000/graphql")
connection.onopen = () => {
console.log("connection open")
let init = JSON.stringify({type:"connection_init",payload:{Authorization:"Bearer eyJhbG.....HIDDEN....dDgw"}})
let listen = JSON.stringify({"id":"1","type":"start","payload":{"variables":{},"extensions":{},"operationName":null,"query":"subscription {\n followJob(idJob: \"ck0pa2r8r8pit0b17f3k6s729\") {\n progress\n }\n}\n"}})
connection.send(init)
connection.send(listen)
}
connection.onmessage = e => {
console.log("data coming")
console.log(e.data)
}
connection.onerror = e =>{
console.log(e)
}
(function wait () {
setTimeout(wait, 1000000);
})();
GraphQL 服务器确实收到了请求,并且具有与从控制台发出的请求完全相同的消息数据,但由于某些原因,它在那之后不处理查询,不会在日志中抛出任何错误或消息...
你知道我可能遗漏了什么吗?
非常感谢您的帮助。
只需像这样指定 websocket 协议
const connection = new WebSocket("ws://localhost:4000/graphql","graphql-ws")