I need to integrate subscription
in my ReactNative
app. The subscription
works fine on localhost
in graphiql
. I have deployed my backend on Heroku
. I am using apollo-server
and not hasura
. My subscriptions are not working for the url given by Heroku but it works fine on localhost. Queries and mutations work fine for both localhost and Heroku url. So I am trying to access my subscription from my ReactNative
client. I have kept the base url as my local host. The queries and mutations part works for my ReactNative
client but my subscription part is not working.
I have configured my Apollo client for subscription by adding this
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(),
});
Here is my useSubscription
hook
const {data, error, loading} = useSubscription(
HEALTH_CONSULTATION_SUBSCRIPTION,
);
I am neither getting error nor data.
I am triggering the subscription
from Graphiql