Я наконец закончил свой бэкэнд с Аполлоном.
Теперь я перешел на фронтенд.
Я заставил его работать с обычным 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