Comments (3)
Hi @justdvl, it does work. Here is an example we have
import { ApolloLink, NextLink, Operation } from '@apollo/client/link/core'
import { GraphQLWsLink } from '@apollo/client/link/subscriptions'
import { getMainDefinition, hasDirectives } from '@apollo/client/utilities'
import { createClient } from 'graphql-ws'
import { createHttpLink } from './httpLink'
export class GatewayLink extends ApolloLink {
wsLink: ApolloLink
httpLink: ApolloLink
constructor(env: Envs, clientName: string) {
super()
this.wsLink = new GraphQLWsLink(
createClient({
url: YOUR URL HERE,
lazy: true,
})
)
this.httpLink = createHttpLink({
uri: YOUR URI HERE,
headers: {
'X-Request-From': clientName,
},
})
}
public request(operation: Operation, forward?: NextLink) {
if (hasDirectives(['rest'], operation.query)) {
return forward?.(operation) ?? null
}
const definition = getMainDefinition(operation.query)
if (
definition.kind === 'OperationDefinition' &&
definition.operation === 'subscription'
) {
return this.wsLink.request(operation, forward)
}
return this.httpLink.request(operation, forward)
}
}
from apollo-multi-endpoint-link.
@jean9696 It is also worth noting that it is needed to check for typeof window !== 'undefined'
and only then define the wsLink
, like so:
if (typeof window !== 'undefined') {
this.wsLink = new GraphQLWsLink(
createClient({
lazy: true,
url: 'ws://localhost:8080/graphql',
}),
)
}
Otherwise I get this:
Error: WebSocket implementation missing; on Node you can `import WebSocket from 'ws';` and pass `webSocketImpl: WebSocket` to `createClient`
from apollo-multi-endpoint-link.
Thank you @jean9696. I assume I need to create 2 instances of GatewayLink, one for each BE service I connect to (as I need to maintain websocket with both services)?
How do I then use these instances with MultiAPILink? I am missing this last part.
Currently I have:
const httpLink = new MultiAPILink({
createHttpLink: () => createHttpLink(),
endpoints,
httpSuffix: '',
wsSuffix: '',
})
links.push(httpLink)
Thanks.
from apollo-multi-endpoint-link.
Related Issues (20)
- Does the endpoint become part of the cache key? HOT 6
- Multi subscription end point HOT 2
- Default endpoint HOT 2
- Need Sample test case HOT 2
- Missing dependencies HOT 1
- Updated?
- Error here
- How to pass additional variables to query? HOT 5
- Mulitple Apis in a single query HOT 2
- Graphql schema interception / types generation with multiple endpoints HOT 4
- api directive not acceptable by server side and how can define it in the backend HOT 1
- Endpoints get messed up when querying with a unique @api name HOT 3
- Not working with Apollo persistedQueryLink? HOT 3
- Collaborations with similar projects HOT 1
- Adding different error links for different endpoints HOT 2
- ApolloError: field 'basic_users' not found in type: 'query_root' HOT 1
- Not working within Nuxt 3 HOT 1
- prefixTypenames doesn't work with fragments?
- Main article link is broken.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from apollo-multi-endpoint-link.