обновить соединение с помощью средства обновления подписки на ретрансляцию

#react-native #relay #relaymodern #react-relay #graphql-relay

#react-native #ретрансляция #relaymodern #react-relay #graphql-relay

Вопрос:

У меня есть настройка подписки на ретрансляцию, при которой я получаю данные в программе обновления, которая выглядит следующим образом 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 amp;amp; 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
          )
      }
    `
  }
);
  

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

Комментарии:

1. Шайлендра .. смотри это . Вот документация по объекту, который передается функции обновления

2. Вы все еще ищете ответ?

3. Спасибо, что заметили, что проблема уже решена.