Как мне заставить мой http и подписку работать на клиенте с graphQL? - PullRequest
0 голосов
/ 07 июля 2019

Я наконец закончил свой бэкэнд с Аполлоном. Теперь я перешел на фронтенд.

Я заставил его работать с обычным http-соединением и получил несколько сообщений с сервера (приложение чата). Теперь я также попытался подключить к ней ссылку для подписки (что само по себе очень запутанно, потому что есть несколько примеров снаружи, и все делают это немного по-разному, но ни один из них не работает).

Итак, вот как выглядит мой индексный файл в интерфейсе реакции:

import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import * as serviceWorker from "./serviceWorker";
import { ApolloClient } from "apollo-client";
import { ApolloProvider } from "react-apollo";
import { WebSocketLink } from "apollo-link-ws";
import { ApolloLink } from "apollo-link";
import { HttpLink } from "apollo-link-http";
import { InMemoryCache } from "apollo-cache-inmemory";
const wsLink = new WebSocketLink({
  uri: `ws://localhost:4000/graphql`,
  options: {
    reconnect: true
  }
});
// Create an http link:
const httpLink = new HttpLink({
  uri: "http://localhost:4000/graphql"
});
const link = ApolloLink.from([httpLink, wsLink]);
const client = new ApolloClient({
  link,
  cache: new InMemoryCache()
});
ReactDOM.render(
  <ApolloProvider client={client}>
    <App />
  </ApolloProvider>,
  document.getElementById("root")
);
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.

serviceWorker.unregister();

Я также пробовал разные методы, например, с split от apollo-link, например:

const link = split(
  // split based on operation type
  ({ query }) => {
    const definition = getMainDefinition(query);
    return (
      definition.kind === "OperationDefinition" &&
      definition.operation === "subscription"
    );
  },
  wsLink,
  httpLink
);

Я также попробовал это с ApolloClient от apollo-boost вместо apollo-client.

Может кто-нибудь помочь мне, потому что я не могу заставить его работать. Сообщение об ошибке всегда:

Сбой соединения WebSocket с 'ws: // localhost: 4000 / graphql': Ошибка при установлении соединения: net :: ERR_CONNECTION_REFUSED

Если вы хотите увидеть полный код: https://github.com/SelfDevTV/graphql-simple-chat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...