确保在AppSync中配置好subscribe事件的监听器。
确保在node.js中正确地使用AWS SDK for JavaScript。
确保AppSync中的GraphQL模式与node.js中的代码匹配。
确保订阅事件函数中正确地使用GraphQL实时对象(realtime object),如下代码所示:
const AWS = require('aws-sdk');
AWS.config.update({region: process.env.REGION});
const appsync = new AWS.AppSync();
const gql = require('graphql-tag');
const subscription = appsync.subscribe({
query: gql`subscription onNewComment($postId: ID!) {
Comment(postId: $postId) {
id
content
}
}`,
variables: {postId: '1'},
});
subscription.subscribe({
next(data) {
console.log('New comment: ', data);
},
error(error) {
console.log('Error: ', error);
},
complete() {
console.log('Subscription complete');
},
});
const WebSocket = require('ws');
const ws = new WebSocket('wss://your-api-id.appsync-realtime-api.your-region.amazonaws.com/graphql', {
headers: {
'Sec-WebSocket-Protocol': 'graphql-ws',
'x-api-key': 'your-api-key',
Authorization: 'Bearer ' + 'your-jwt-token',
},
});
ws.on('open', function() {
console.log('WebSocket connection established');
});
ws.on('message', function(data) {
console.log('WebSocket message received: ', data);
});
ws.on('close', function() {
console.log('WebSocket connection closed');
});
以上提到的解决方法应该能够解决在node.js中使用GraphQL订阅事件时出现的问题。