订阅在 React Native 中不起作用?

Subscription not working in React Native?

我需要在我的 ReactNative 应用程序中集成 subscriptionsubscriptiongraphiql 中的 localhost 上工作正常。我已经在 Heroku 上部署了我的后端。我使用的是 apollo-server 而不是 hasura。我的订阅不适用于 Heroku 提供的 url,但它在本地主机上运行良好。查询和变更对 localhost 和 Heroku 都很好 url。所以我正在尝试从我的 ReactNative 客户端访问我的订阅。我将基地 url 保留为我的本地主机。查询和变更部分适用于我的 ReactNative 客户端,但我的订阅部分不起作用。

我已经通过添加这个

配置了我的 Apollo 客户端订阅
const httpLink = createHttpLink({
  uri: 'http://localhost:5000',
});

const wsLink = new WebSocketLink({
  uri: `ws://localhost:5000`,
  options: {
    reconnect: true,
    connectionParams: {
      // headers: {
      //   Authorization: `Bearer ${token}`,
      // },
    },
  },
});

const authLink = setContext(async (req, {headers}) => {
  try {
    const token = await AsyncStorage.getItem('token');
    return {
      headers: {
        ...headers,
        authorization: token ? `Bearer ${token}` : '',
      },
    };
  } catch (e) {
    console.log(e);
  }
});

const link = split(
  ({query}) => {
    const {kind, operation} = getMainDefinition(query);
    return kind === 'OperationDefinition' && operation === 'subscription';
  },
  wsLink,
  authLink.concat(httpLink),
);

const client = new ApolloClient({
  link: link,
  cache: new InMemoryCache(),
});

这是我的 useSubscription 挂钩

const {data, error, loading} = useSubscription(
    HEALTH_CONSULTATION_SUBSCRIPTION,
  );

我既没有收到错误也没有收到数据。 我正在从 Graphiql

触发 subscription

所以我的 React Native 代码没有问题。问题出在我使用的 Heroku 免费层。我尝试用 Hasura's Subscription https://hasura.io/learn/graphql/graphiql?tutorial=react-native 替换我的 subscription 并且它有效。