Моя идея состояла в том, чтобы создать клиентское приложение с использованием response, urql и graphql api с использованием эликсира и абсента, но на данный момент все выглядит так, как будто они не очень хорошо играют вместе.
Есть ли способ на самом деле использовать Абсент подписки с любым другим клиентом, кроме Apollo? Я пытался использовать urql, но мне не удается подключиться через ws, получая следующую ошибку:
Ошибка подключения WebSocket к 'ws: // localhost: 4000 / socket / websocket': ошибка во время рукопожатия WebSocket : Отправлено непустой заголовок 'Se c -WebSocket-Protocol', но ответа не получено
Единственное, что я нашел до сих пор, что, по-видимому, связано с этой проблемой, - это абсент библиотеки / socket-apollo-link (https://github.com/absinthe-graphql/absinthe-socket/tree/master/packages/socket-apollo-link), но, очевидно, только для Apollo.
В своей неудачной попытке я сделал следующее:
import React from 'react'
import { Provider, Client, dedupExchange, fetchExchange, subscriptionExchange } from 'urql'
import { cacheExchange } from '@urql/exchange-graphcache'
import { SubscriptionClient } from 'subscriptions-transport-ws'
const DataProvider = ({ children }) => {
const cache = cacheExchange({})
const subscriptionClient = new SubscriptionClient('ws://localhost:4000/socket/websocket', {})
const client = new Client({
url: 'http://localhost:4000/api',
exchanges: [
dedupExchange,
cache,
fetchExchange,
subscriptionExchange({
forwardSubscription: operations => subscriptionClient.request(operations),
}),
],
})
return <Provider value={client}>{children}</Provider>
}
export default DataProvider
This ' subscription-transport-ws 'Я нашел из учебника, и этот таинственный' / websocket 'в конце ws url был упомянут в некотором выпуске gh, но, похоже, он работает (прежде чем добавить, что в конце url не было ws) соединение вообще).