github.com/humans-group/gqlgen@v0.7.2/example/chat/src/index.js (about)

     1  import React from 'react';
     2  import ReactDOM from 'react-dom';
     3  import { ApolloProvider } from 'react-apollo';
     4  import ApolloClient from 'apollo-client';
     5  import App from './App';
     6  import { InMemoryCache } from 'apollo-cache-inmemory';
     7  import { split } from 'apollo-link';
     8  import { HttpLink } from 'apollo-link-http';
     9  import { WebSocketLink } from 'apollo-link-ws';
    10  import { getMainDefinition } from 'apollo-utilities';
    11  
    12  const wsLink = new WebSocketLink({
    13      uri: `ws://localhost:8085/query`,
    14      options: {
    15          reconnect: true
    16      }
    17  });
    18  
    19  const httpLink = new HttpLink({ uri: 'http://localhost:8085/query' });
    20  
    21  
    22  // depending on what kind of operation is being sent
    23  const link = split(
    24      // split based on operation type
    25      ({ query }) => {
    26          const { kind, operation } = getMainDefinition(query);
    27          return kind === 'OperationDefinition' && operation === 'subscription';
    28      },
    29      wsLink,
    30      httpLink,
    31  );
    32  
    33  const apolloClient = new ApolloClient({
    34      link: link,
    35      cache: new InMemoryCache(),
    36  });
    37  
    38  if (module.hot) {
    39      module.hot.accept('./App', () => {
    40          const NextApp = require('./App').default;
    41          render(<NextApp/>);
    42      })
    43  }
    44  
    45  function render(component) {
    46      ReactDOM.render(<ApolloProvider client={apolloClient}>
    47          {component}
    48      </ApolloProvider>, document.getElementById('root'));
    49  }
    50  
    51  render(<App />);