обновить соединение с помощью программы ретрансляции подписки - PullRequest
0 голосов
/ 21 марта 2019

У меня есть настройка релейной подписки, в которой я получаю данные в программе обновления, которая выглядит следующим образом https://gist.github.com/ydvsailendar/6b9569bbcbc269246e299eb5cce18a80#file-gistfile1-txt-L10

Я хочу обновить свое соединение для запроса, чтобы я мог получать обновленные сообщения с помощью запроса, когда подписка получает новые сообщения.

вот моя подписка:

import { ConnectionHandler } from 'relay-runtime';
import {
    graphql,
    requestSubscription
} from 'react-relay'
import environment from '../network';

const subscription = graphql`
    subscription chatWithSubscription($id: String){
        chatWith(id: $id){
            textMessage
            id
            chatId
            date
            userType
            translatedMessage
        }
    }
`;

function chatWith(id) {
    const variables = { id: id };
    requestSubscription(environment, {
        subscription,
        variables,
        onError: (error) => {
            console.log(error, "error");
        },
        updater: (store) => {
            console.log(store, "store"); 
        }
    });
}

module.exports = chatWith;

и вот мой запрос, который я хочу обновить с помощью средства обновления:

module.exports = createPaginationContainer(
  ChatMessages,
  graphql`
    fragment ChatMessages_query on Query
      @argumentDefinitions(
        count: { type: "Int", defaultValue: 10 }
        cursor: { type: "String" }
        chatId: { type: "ID" }
      ) {
      messages(
        first: $count
        after: $cursor
        chatId: $chatId
      ) @connection(key: "ChatMessages_messages") {
        edges {
          node {
            id
            chatId
            userType
            date
            textMessage
            translatedMessage
          }
          cursor
        }
        totalCount
        pageInfo {
          endCursor
          hasNextPage
        }
      }
    }
  `,
  {
    direction: "forward" | "backward",
    getConnectionFromProps(props) {
      return props.query && props.query.messages;
    },
    // This is also the default implementation of `getFragmentVariables` if it isn't provided.
    getFragmentVariables(prevVars, totalCount) {
      return {
        ...prevVars,
        count: totalCount
      };
    },
    getVariables(props, { count, cursor }, fragmentVariables) {
      return {
        count,
        cursor,
        chatId: fragmentVariables.chatId
      };
    },
    query: graphql`
      query ChatMessagesPaginationQuery(
        $count: Int!
        $cursor: String
        $chatId: ID!
      ) {
        ...ChatMessages_query
          @arguments(
            count: $count
            cursor: $cursor
            chatId: $chatId
          )
      }
    `
  }
);

Я новичок в использовании средства обновления через подписку, и документы действительно приводили в замешательство, я не мог понять опору зрителей и другие, упомянутые в документах. пожалуйста, помогите мне с реализацией.

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