要在Node.js或Vanilla JavaScript中触发Apollo Client的订阅,您需要使用WebSockets。下面是一种可能的解决方法:
subscriptions-transport-ws
依赖项:npm install subscriptions-transport-ws
subscriptions-transport-ws
和apollo-link-http
依赖项:import { SubscriptionClient } from 'subscriptions-transport-ws';
import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client';
import { WebSocketLink } from '@apollo/client/link/ws';
const wsLink = new WebSocketLink({
uri: 'ws://your-graphql-server-url',
options: {
reconnect: true,
},
});
const httpLink = new HttpLink({
uri: 'http://your-graphql-server-url',
});
const client = new ApolloClient({
link: wsLink.split(
(operation) => operation.getContext().hasSubscription,
wsLink,
httpLink
),
cache: new InMemoryCache(),
});
client.subscribe
方法来订阅GraphQL查询:client
.subscribe({
query: YOUR_SUBSCRIPTION_QUERY,
variables: YOUR_SUBSCRIPTION_VARIABLES,
})
.subscribe({
next(data) {
console.log('Received data:', data);
},
error(error) {
console.error('Error:', error);
},
});
请注意,上述代码仅提供了一个基本的示例,您需要根据您的具体情况进行适当的修改和调整。另外,确保替换your-graphql-server-url
,YOUR_SUBSCRIPTION_QUERY
和YOUR_SUBSCRIPTION_VARIABLES
为实际的值。