์น ์์ผ์ ์ฐ๊ฒฐ๋ ์ฌ์ฉ์๋ฅผ ์๋ณํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ฌํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) ์ ํด๋ผ์ด์ธํธ๋ฅผ ๋ง๋ค๊ณ connectionParams
๋ก WebSocketLink
๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
const wsLink = new WebSocketLink({
uri: `ws://localhost:3333`,
options: {
connectionParams: {
lazy: true,
authToken: localStorage.getItem('token')
}
}
});
์ด ์์ ์์ ์ฌ์ฉ์๋ ๋ก๊ทธ์ธํ์ง ์์์ผ๋ฉฐ ํ ํฐ์ด ์์ต๋๋ค. lazy
๊ฐ true๋ก ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์ websocket๋ ์์ง ์ฐ๊ฒฐ๋์ง ์์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ํ ์ฒซ ๋ฒ์งธ ๊ตฌ๋
์ด ์ ์ก๋ ๋๊น์ง ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค.
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๊ณ ์ฐ๊ฒฐ๋๋ฉด ์ด ๊ฐ์ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ํ๊ฐ ์๋๋ผ ํด๋ผ์ด์ธํธ๊ฐ ๊ตฌ์ฑ๋ ๋ ์ค์ ๋์๊ธฐ ๋๋ฌธ์ authToken
๋ null์
๋๋ค.
subscriptionServer.onConnect = params => {
console.log('connected: ', params.authToken) // null
}
์ฟผ๋ฆฌ ๋ฐ ๋ณํ์ ์ฐ๊ฒฐ ๋งํฌ๋ฅผ ํตํด ์น์ธ๋ฉ๋๋ค.
const httpLink = new HttpLink({ uri: GRAPHQL_ENDPOINT })
const authLink = new ApolloLink((operation, forward) => {
const token = localStorage.getItem('token')
if (token) {
operation.setContext({
headers: {
authorization: `bearer ${token}`
}
})
}
return forward(operation)
})
const httpAuthLink = authLink.concat(httpLink)
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ํ ์์ฒญ์ด ์ ์ก๋๋ฉด token
๊ฐ authorization
ํค๋์ ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ์๋ฅผ ์๋ณํ ์ ์์ต๋๋ค. WebSocketLink
์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์์ ๋ฌธ์ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๊ธฐ ์ ์ ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ์ฑํ ๋ ํ ํฐ์ ์ฝ๋๋ค๋ ๊ฒ์
๋๋ค.
์์ ํด๊ฒฐ์ฑ
์ ์ฐพ์ ์ ์์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์๋ณ๋๊ณ ํ ํฐ์ด ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ฉด window.location = '/'
ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นฉ๋๋ค. ๊ทธ๋๋ ๋๋ฌด ๋๋ฝ๋ค๋ฉด.
์ถ๊ฐ์ ๋ํ ์ด๋ค ์๊ฐ onConnecting
๋ฐ onDisconnect
์์ฑ์์ ๋ฐฉ๋ฒ์ options
์ WebSocketLink
? ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์น ํ์๊ฐ ์์ต๋๋ค.
const wsLink = new WebSocketLink({
uri: `ws://localhost:3333`,
options: {
onConnecting: () => {
// Invoked just before the Socket initially connects
// returns additional connection params
return {
authToken: localStorage.getItem('token')
}
},
onDisconnect: () => {
// Invoked when the socket is disconnected
}
}
});
๊ทธ๋ ๊ฒํ์ง ๋ง๊ณ ๋ค์์ ์๋ํ์ญ์์ค.
connectionParams: () => ({
lazy: true,
authToken: localStorage.getItem('token')
})
@gpbaculio ๊ฐ์ฌํฉ๋๋ค
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ทธ๋ ๊ฒํ์ง ๋ง๊ณ ๋ค์์ ์๋ํ์ญ์์ค.