确认 AppSync API 上订阅者使用的协议是否为 WebSocket。只有使用 WebSocket 协议的订阅者才能接收到实时更新。
确认 AppSync 配置中 WebSocket 协议的启用情况。您可以在 AppSync 配置文件的 API 部分查看 WebSocket 协议的启用情况。
示例代码:
"api": {
"defaultAuthenticationType": {
"authenticationType": "AMAZON_COGNITO_USER_POOLS",
"userPoolConfig": {
"awsRegion": "us-east-1",
"userPoolId": "us-east-1_XXXXXXXXX",
"defaultAction": "DENY"
}
},
"endpointType": "GRAPHQL",
"name": "appsync-api",
"schema": "../schema.graphql",
"authenticationType": "API_KEY",
"additionalAuthenticationProviders": [
{
"authenticationType": "AMAZON_COGNITO_USER_POOLS",
"userPoolConfig": {
"awsRegion": "us-east-1",
"userPoolId": "us-east-1_XXXXXXXXX",
"appIdClientRegex": "^[0-9a-z]{10}$"
}
}
],
"xrayEnabled": true,
"websocketEnabled": true, // 确认 WebSocket 协议已启用
}
确认 AppSync 客户端的 API 配置是否正确。您可以在 Amplify 配置的 aws-exports.js 文件中查看 AppSync 客户端的配置情况。
示例代码:
const awsmobile = {
"aws_appsync_region": "us-east-1",
"aws_appsync_authenticationType": "API_KEY",
"aws_appsync_apiKey": "YOUR_APPSYNC_API_KEY",
"aws_appsync_graphqlEndpoint": "YOUR_APPSYNC_API_ENDPOINT",
"aws_appsync_websocketEndpoint": "YOUR_APPSYNC_WEBSOCKET_ENDPOINT", // 确认 WebSocket Endpoint 是否正确
};
如果您使用的是旧版本的 Amplify,请尝试更新至最新版本。某些旧版本的 Amplify 可能存在 WebSocket 连接问题。
检查网络连接和代理设置。某些代理设置可能会阻止 WebSocket 连接。