Graphql 特定突变客户分离

Graphql 特定突变客户分离,graphql,react-apollo,apollo-client,apollo-link,Graphql,React Apollo,Apollo Client,Apollo Link,我知道可以使用apollo link ws在客户端处理订阅。我还创建了一个客户端,它使用标准的http运行querys和translations,并使用WebSocket订阅。但我也需要通过websocket向服务器发布一些数据。因此,一种方法是对所有操作(查询、变异)仅使用apollo link ws。但是,可以决定哪个查询使用Websocket,哪个查询使用标准http客户端吗 import { ApolloClient } from 'apollo-client'; import { ge

我知道可以使用apollo link ws在客户端处理订阅。我还创建了一个客户端,它使用标准的
http
运行
querys
translations
,并使用
WebSocket
订阅
。但我也需要通过websocket向服务器发布一些数据。因此,一种方法是对所有操作(查询、变异)仅使用
apollo link ws
。但是,可以决定哪个查询使用Websocket,哪个查询使用标准http客户端吗

import { ApolloClient } from 'apollo-client';
import { getMainDefinition } from 'apollo-utilities';
import { split } from 'apollo-link';
import { createUploadLink } from 'apollo-upload-client';
import { WebSocketLink } from 'apollo-link-ws';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { ApolloProvider } from 'react-apollo';

const uploadLink = createUploadLink({
  uri:`http://localhost:8899/graphql`,
  credentials: 'include'
});

const wsLink = new WebSocketLink({
  uri: `ws://localhost:8899/graphql`,
  options: {
    reconnect: true,
    timeout: 120000,
  }
})

const client = new ApolloClient({
  link: split(
    // split based on operation type
    ({ query }) => {
      const definition = getMainDefinition(query);
      console.table(definition);
      return (
        definition.kind === 'OperationDefinition' &&
        definition.operation === 'subscription'
      );
    },
    wsLink,
    uploadLink),
  cache : new InMemoryCache(),

});
然后我将客户机传递给
ApolloProvider