Compartir a través de


Suscribirse a notificaciones de lista

Introducido en SharePoint Framework v1.7.0, puede suscribirse a los cambios en los archivos almacenados en una biblioteca de documentos de SharePoint. Esto le permite responder a los cambios que se produzcan, sin tener que obtener periódicamente el contenido de la biblioteca.

Requisitos previos

Para usar la funcionalidad de suscripción de lista de SharePoint Framework, primero debe instalar el paquete **npm @microsoft/sp-list-subscription**. Puede hacerlo con el fragmento de código siguiente:

npm install @microsoft/sp-list-subscription --save --save-exact

Reciba una notificación de los cambios en los documentos almacenados en una biblioteca de documentos de SharePoint

Para suscribirse a los cambios en los archivos almacenados en una biblioteca de documentos de SharePoint, cree una instancia de la clase ListSubscriptionFactory. A continuación, llame al método createSubscription() pasando el Id. de la biblioteca de documentos a los que desea suscribirse. Si la biblioteca de documentos se encuentra en el sitio actual, es suficiente especificar solo el identificador de biblioteca. Si se encuentra en otro sitio o colección de sitios, también debe especificar sus identificadores.

A continuación se muestra un ejemplo de una suscripción de listas a una biblioteca de documentos que se encuentra en el sitio actual:

import { ListSubscriptionFactory, IListSubscription } from '@microsoft/sp-list-subscription';
import { Guid } from '@microsoft/sp-core-library';

export default class LatestDocumentsWebPart extends BaseClientSideWebPart<ILatestDocumentsWebPartProps> {
  private _listSubscriptionFactory: ListSubscriptionFactory;
  private _listSubscription: IListSubscription;

  private async createListSubscription(): Promise<void> {
    this._listSubscriptionFactory = new ListSubscriptionFactory(this);
    this._listSubscription = await this._listSubscriptionFactory.createSubscription({
      listId: Guid.parse(this.properties.listId),
      callbacks: {
        notification: this._loadDocuments.bind(this)
      }
    });
  }

  private _loadDocuments(): void {
    // load documents here
  }

  // omitted for brevity
}

Al crear una suscripción de listas, usando la propiedad callbacks.notification, debe especificar el método que se debe llamar cuando se ha detectado un cambio. El método no tiene argumentos y, por motivos de seguridad, no recibe una notificación de lo que se cambió exactamente. Para obtener el contenido más reciente de la biblioteca de documentos, cumpliendo con los permisos configurados, puede usar la API de REST de SharePoint o Microsoft Graph.

Configuración adicional

Dependiendo de la solución, es posible que deba proporcionar configuración adicional al suscribirse a notificaciones de listas.

Conectarse a una colección de sitios en una empresa con varias zonas geográficas

Si usa SharePoint en una empresa con varias zonas geográficas, deberá proporcionar el dominio donde se encuentra la colección de sitios específica. Puede hacerlo con la propiedad domain, por ejemplo:

this._listSubscriptionFactory.createSubscription({
  domain: this.properties.siteDomain,
  siteId: Guid.parse(this.properties.siteId),
  webId: Guid.parse(this.properties.webId),
  listId: Guid.parse(this.properties.listId),
  callbacks: {
    notification: this._loadDocuments.bind(this)
  }
});

Recibir una notificación cuando se haya establecido o cancelado la suscripción

En algunos casos, puede que quiera recibir una notificación cuando el componente que está creando se ha suscrito correctamente a las notificaciones de listas o si ha perdido la conexión. Esto le permitirá comunicar la conexión al usuario a través de la interfaz de usuario.

La API de suscripción de lista expone dos devoluciones de llamada adicionales que puede implementar para responder al estado de la suscripción. El código siguiente muestra el caso, donde el componente recibirá una notificación cuando se haya establecido la suscripción y cuando se haya desconectado.

private createListSubscription(): void {
  this._listSubscriptionFactory.createSubscription({
    domain: this.properties.siteDomain,
    siteId: Guid.parse(this.properties.siteId),
    webId: Guid.parse(this.properties.webId),
    listId: Guid.parse(this.properties.listId),
    callbacks: {
      notification: this._loadDocuments.bind(this),
      connect: this._subscriptionConnected.bind(this),
      disconnect: this._subscriptionDisconnected.bind(this)
    }
  });
}

private _subscriptionConnected(): void {
  // code to execute when the subscription to the list has been established
}

private _subscriptionDisconnected(reason: string): void {
  // code to execute when the connection to the list has been disconnected
}

El método para la devolución de llamada callbacks.disconnect pasa como un argumento el motivo por el que se ha desconectado la conexión. Los valores posibles son io server disconnect, cuando la conexión se ha interrumpido por el cliente o io client disconnect cuando el servidor cierra la conexión.

Consideraciones

  • todos los componentes SharePoint Framework pueden usar las funcionalidades de suscripción de lista
  • puede suscribirse a eventos desde bibliotecas y listas
  • hay un retraso de unos segundos entre el cambio y la notificación que recibe el componente.
  • los componentes pueden suscribirse a cambios en varias bibliotecas de documentos
  • la notificación de cambio no pasa información sobre el documento agregado o modificado. Para ver los cambios, use la API de REST de SharePoint o Microsoft Graph

Vea también