Я хотел бы использовать text/event-stream через библиотеку axios в nodejs для подписки на подписки GQL.
Это возможно? И как я могу это сделать?
Я пытаюсь использовать свой код:
console.info("a")
const axios = require('axios');
const response = await axios.get(
'http://localhost:4003/graphql',
{ headers: { responseType: 'stream', accept: "text/event-stream" } }
);
console.info("b")
Но b никогда не печатается.
Что не так?
Я использую graphql-yoga





Вы можете проверить документы здесь:
https://the-guild.dev/graphql/yoga-server/docs/features/subscriptions
Есть 2 проблемы.
Правильный пример:
curl -N -H "accept:text/event-stream" http://localhost:4000/graphql?query=subscription%20%7B%0A%20%20countdown%28from%3A%205%29%0A%7D
но в вашем коде есть только /graphql. Итак, серверное событие не знает, о чем вы спрашиваете.
Первый вариант в curl — -N. Читая man curl вы можете обнаружить, что это значит no-buffer.
-N, --no-buffer Disables the buffering of the output stream. In normal work situations, curl will use a standard buffered output stream that will have the effect that it will output the data in chunks, not necessarily exactly when the data arrives. Using this option will disable that buffering. Note that this is the negated option name documented. You can thus use --buffer to enforce the buffering. Example: curl --no-buffer https://example.com See also -#, --progress-bar.
Хотя этот вариант работает в curl
Что такое LIBCURL эквивалентно --N/--no-buffer?
он недоступен в axios.
В curl вы можете отправить запрос и получить ответы до закрытия соединения. В axios вы должны закрыть соединение, чтобы получить ответ.
Я рекомендую вам использовать другие методы, описанные в первой ссылке. Почитал про Apollo Client, Urql и Relay и что-то выбрал. Они разработаны, чтобы помочь вам, уменьшить объем вашего кода и упростить обработку ошибок.
Какой сервер Graphql вы используете?