订阅在 React Native 中不起作用?
Subscription not working in React Native?
我需要在我的 ReactNative
应用程序中集成 subscription
。 subscription
在 graphiql
中的 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
并且它有效。
我需要在我的 ReactNative
应用程序中集成 subscription
。 subscription
在 graphiql
中的 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
并且它有效。