Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Wird verwendet WebSockets , um Nachrichten im Amazon Chime SDK-Messaging zu empfangen

Fokusmodus
Wird verwendet WebSockets , um Nachrichten im Amazon Chime SDK-Messaging zu empfangen - Amazon Chime SDK

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Sie können das Amazon Chime JS SDK verwenden, um Nachrichten zu empfangen WebSockets, oder Sie können die WebSocket Client-Bibliothek Ihrer Wahl verwenden.

Folgen Sie diesen Themen in der angegebenen Reihenfolge, um mit der Nutzung WebSockets zu beginnen:

Definition einer IAM-Richtlinie

Definieren Sie zunächst eine IAM-Richtlinie, die Ihnen die Erlaubnis gibt, eine WebSocket Verbindung herzustellen. Die folgende Beispielrichtlinie erteilt die AppInstanceUser Erlaubnis, eine WebSocket Verbindung herzustellen.

"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action: [ "chime:Connect" ], "Resource": [ "arn:aws:chime:region:{aws_account_id}:app-instance/{app_instance_id}/user/{app_instance_user_id}" ] }, { "Effect": "Allow", "Action: [ "chime:GetMessagingSessionEndpoint" ], "Resource": [ "*" ] } ] }

Der Endpunkt wird abgerufen

In den folgenden Schritten wird erklärt, wie der in einer WebSocket Verbindung verwendete Endpunkt abgerufen wird.

  1. Verwenden der GetMessagingSessionEndpointAPI zum Abrufen des WebSocket Endpunkts.

  2. Verwenden Sie die URL, die von der zurückgegeben wurde GetMessagingSessionEndpointAPI zum Erstellen einer signierten WebSocket URL mit Signature Version 4. Wenn Sie dabei Hilfe benötigen, können Sie den Anweisungen in der folgenDie Verbindung wird hergestellt.

    Anmerkung

    WebSocket URLs habe das folgende Formular: id.region.ws-messaging.chime.aws

Die Verbindung wird hergestellt

Nachdem Sie einen Endpunkt abgerufen haben, verwenden Sie die Connect-API, um eine WebSocket Verbindung zum Amazon Chime SDK-Backend-Server herzustellen und Nachrichten für einen zu empfangen. AppInstanceUser Sie müssen AWS Signature Version 4 verwenden, um Anfragen zu signieren. Weitere Informationen zum Signieren einer Anfrage finden Sie unter Signieren von AWS Anfragen mit Signature Version 4.

Anmerkung

Um den Endpunkt abzurufen, können Sie den aufrufen GetMessagingSessionEndpointAPI. Sie können die WebSocket Client-Bibliothek Ihrer Wahl verwenden, um eine Verbindung zum Endpunkt herzustellen.

Anforderungssyntax

GET /connect ?X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIARALLEXAMPLE%2F20201214%2Fregion%2Fchime%2Faws4_request &X-Amz-Date=20201214T171359Z &X-Amz-Expires=10 &X-Amz-SignedHeaders=host &sessionId={sessionId} &userArn={appInstanceUserArn} &X-Amz-Signature=db75397d79583EXAMPLE

URI-Anforderungsparameter

Alle URI-Anforderungsabfrageparameter müssen URL-codiert sein.

X-Amz-Algorithmus

Identifiziert die Version von AWS Signature und den Algorithmus, den Sie zur Berechnung der Signatur verwendet haben. Das Amazon Chime SDK unterstützt nur die Authentifizierung mit AWS Signature Version 4, der Wert dieser Option ist AWS4-HMAC-SHA256 also.

X-Amz-Anmeldedaten

Zusätzlich zu Ihrer Zugriffsschlüssel-ID gibt dieser Parameter auch die AWS Region und den Dienst — den Bereich — an, für den die Signatur gültig ist. Dieser Wert muss dem Bereich entsprechen, den Sie bei Signaturberechnungen verwenden. Die allgemeine Form für diesen Parameterwert lautet:

<yourAccessKeyId>/<date>/<awsRegion>/<awsService >/aws4_request

Zum Beispiel:

AKIAIOSFODNN7EXAMPLE/20201214/us-east-1/chime/aws4_request

X-Amz-Date

Das Datums- und Uhrzeitformat muss dem ISO 8601-Standard entsprechen, und Sie müssen es als formatieren. yyyyMMddTHHmmssZ Beispielsweise müssen Sie 08/01/2020 15:32:41.982-700 in die koordinierte Weltzeit (UTC) umrechnen und als angeben. 20200801T083241Z

Von X-Amz signierte Header

Listet die Header auf, die Sie zur Berechnung der Signatur verwendet haben. Für die Signaturberechnungen sind folgende Header erforderlich:

  • Der HTTP-Host-Header.

  • Alle x-amz-*-Header, die Sie der Anfrage hinzufügen möchten.

Anmerkung

Signieren Sie aus Sicherheitsgründen alle Anforderungsheader, die Sie in Ihre Anfrage aufnehmen möchten.

X-Amz-Signaturen

Stellt die Signatur zur Authentifizierung Ihrer Anfrage bereit. Diese Signatur muss mit der Signatur übereinstimmen, die das Amazon Chime SDK berechnet. Ist dies nicht der Fall, lehnt das Amazon Chime SDK die Anfrage ab. Beispiel, 733255ef022bec3f2a8701cd61d4b371f3f28c9f19EXAMPLEd48d5193d7.

X-Amz-Sicherheitstoken

Optionaler Anmeldeinformationsparameter, wenn Anmeldeinformationen verwendet werden, die vom Security Token Service stammen. Weitere Informationen über den Dienst finden Sie in der aktuellsten https://docs.aws.amazon.com/STS/Neuheiten/ APIReference/.

SessionId

Gibt eine eindeutige ID für die WebSocket Verbindung an, die gerade hergestellt wird.

UserArn

Gibt die Identität der Person anAppInstanceUser, die versucht, eine Verbindung herzustellen. Der Wert sollte der ARN von seinAppInstanceUser. Beispiel: arn:aws:chime:us%2Deast%2D1:123456789012:app%2Dinstance/694d2099%2Dcb1e%2D463e%2D9d64%2D697ff5b8950e/user/johndoe

Verwenden von Prefetch zur Bereitstellung von Kanaldetails

Wenn Sie eine WebSocket Verbindung herstellen, können Sie prefetch-on=connect in Ihren Abfrageparametern angeben, ob Ereignisse übermittelt werden sollen. CHANNEL_DETAILS Die Prefetch-Funktion wird mit der Connect-API geliefert, und die Funktion ermöglicht es Benutzern, eine erweiterte Chat-Ansicht ohne zusätzliche API-Aufrufe zu sehen. Benutzer können:

  • Eine Vorschau der letzten Kanalnachricht mit ihrem Zeitstempel anzeigen.

  • Sieh dir die Mitglieder eines Kanals an.

  • Sieh dir die ungelesenen Markierungen eines Kanals an.

Nachdem ein Benutzer mit dem angegebenen Prefetch-Parameter eine Verbindung hergestellt hat, erhält der Benutzer das Ereignis „Sitzung hergestellt“, das angibt, dass die Verbindung hergestellt wurde. Der Benutzer empfängt dann bis zu 50 CHANNEL_DETAILS Ereignisse. Wenn der Benutzer weniger als 50 Kanäle hat, ruft die Connect-API alle Kanäle über CHANNEL_DETAILS Ereignisse vorab ab. Wenn der Benutzer mehr als 50 Kanäle hat, ruft die API die 50 wichtigsten Kanäle, die ungelesene Nachrichten enthalten, und die neuesten Werte vorab ab. LastMessageTimestamp Die CHANNEL_DETAILS Ereignisse kommen in zufälliger Reihenfolge an, und Sie erhalten Ereignisse für alle 50 Kanäle.

Außerdem gibt Prefetch für ChannelMessages und Folgendes zurück: ChannelMemberships

  • ChannelMessages— Liste von ChannelMessageSummaryObjekte, sortiert nach CreatedTimestamp absteigender Reihenfolge. Enthält nur die letzten 20 Nachrichten, die für den Benutzer sichtbar sind. Wenn der Kanal gezielte Nachrichten enthält, die für den aktuellen Benutzer nicht sichtbar sind, werden möglicherweise weniger als 20 Nachrichten zurückgegeben. Der ChannelMessagesHasMore boolesche Wert wird auf true gesetzt, um anzuzeigen, dass mehr Nachrichten vorhanden sind. Soft-Limit, einstellbar auf AWS Kontoebene.

  • ChannelMemberships— Liste von ChannelMembershipSummaryObjekte. Beinhaltet maximal 30 Kanalmitglieder. Soft-Limit, auf AWS Kontoebene einstellbar.

Dieses Beispiel zeigt, wie man es benutztprefetch-on=connect.

GET /connect ?X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIARALLEXAMPLE%2F20201214%2Fregion%2Fchime%2Faws4_request &X-Amz-Date=20201214T171359Z &X-Amz-Expires=10 &X-Amz-SignedHeaders=host &sessionId=sessionId &prefetch-on=connect &userArn=appInstanceUserArn &X-Amz-Signature=db75397d79583EXAMPLE

Dieses Beispiel zeigt die Antwort für einen Kanal. Sie erhalten Antworten für alle 50 Kanäle.

{ "Headers": { "x-amz-chime-event-type": "CHANNEL_DETAILS", "x-amz-chime-message-type": "SYSTEM" }, "Payload": JSON.stringify"({ Channel: ChannelSummary ChannelMessages: List of ChannelMessageSummary ChannelMemberships: List of ChannelMembershipSummary ReadMarkerTimestamp: Timestamp ChannelMessagesHasMore: Boolean }) }

Bearbeitung der Ereignisse

Damit AppInstanceUser Sie Nachrichten empfangen können, nachdem sie eine Verbindung hergestellt haben, müssen Sie sie zu einem Kanal hinzufügen. Verwenden Sie dazu den CreateChannelMembershipAPI.

Anmerkung

An empfängt AppInstanceUser immer Nachrichten für alle Kanäle, zu denen sie gehören. Die Nachrichtenübermittlung wird beendet, wenn der AppInstance Benutzer die Verbindung trennt.

An AppInstanceAdmin und a empfangen ChannelModerator keine Nachrichten auf einem Kanal, es sei denn, Sie verwenden CreateChannelMembershipAPI, um sie explizit hinzuzufügen.

In den folgenden Themen wird erklärt, wie Ereignisse verarbeitet werden.

Grundlegendes zu Nachrichtenstrukturen

Jede WebSocket Nachricht, die Sie erhalten, entspricht diesem Format:

{ "Headers": {"key": "value"}, "Payload": "{\"key\": \"value\"}" }
Überschriften

Amazon Chime SDK-Nachrichten verwenden die folgenden Header-Schlüssel:

  • x-amz-chime-event-type

  • x-amz-chime-message-type

  • x-amz-chime-event-reason

Im nächsten Abschnitt werden die möglichen Werte und Payloads des Headers aufgeführt und beschrieben.

Nutzlast

Websocket-Nachrichten geben JSON-Strings zurück. Die Struktur der JSON-Strings hängt von den x-amz-event-type Headern ab. In der folgenden Tabelle sind die möglichen x-amz-chime-event-type Werte und Payloads aufgeführt:

EventType Format der Nutzdaten

SESSION_ESTABLISHED

N/A. Diese Nachricht wird einmal gesendet, nachdem der Benutzer eine Verbindung mit dem hergestellt hat. WebSocket Sie gibt an, dass jede Nachricht oder jedes Ereignis auf einem Kanal, das eingeht, nachdem der Benutzer die SESSION_ESTABLISHED Nachricht erhalten hat, dem Benutzer garantiert zugestellt wird, solange sie geöffnet WebSocket bleibt.

CREATE_CHANNEL_MESSAGE

ChannelMessage

REDACT_CHANNEL_MESSAGE

UPDATE_CHANNEL_MESSAGE

DELETE_CHANNEL_MESSAGE

PENDING_CREATE_CHANNEL_MESSAGE

PENDING_UPDATE_CHANNEL_MESSAGE

FAILED_CREATE_CHANNEL_MESSAGE

FAILED_UPDATE_CHANNEL_MESSAGE

DENIED_CREATE_CHANNEL_MESSAGE

DENIED_UPDATE_CHANNEL_MESSAGE

CHANNEL_DETAILS

Kanal

Die ChannelSummaryObjekt.

ChannelMessages

Liste von ChannelMessageSummaryObjekte, sortiert nach CreatedTimestamp absteigender Reihenfolge. Beinhaltet die letzten 20 Nachrichten, aber Sie können dieses Limit auf AWS-Kontoebene anpassen.

ChannelMemberships

Liste von ChannelMembershipSummaryObjekte. Gibt maximal 30 Kanalmitglieder zurück, aber Sie können dieses Limit auf AWS-Kontoebene anpassen.

ReadMarkerTimestamp

Der Zeitpunkt, zu dem der Kanal AppInstanceUser zuletzt als gelesen markiert wurde.

UPDATE_CHANNEL

Channel

DELETE_CHANNEL

BATCH_CREATE_CHANNEL_MEMBERSHIP

BatchChannelMembership

CREATE_CHANNEL_MEMBERSHIP

ChannelMembership

DELETE_CHANNEL_MEMBERSHIP

UPDATE_CHANNEL_MEMBERSHIP

x-amz-chime-message-Typ

In der folgenden Tabelle sind die x-amz-chime-message-type Nachrichtentypen aufgeführt.

Nachrichtentyp Beschreibung

STANDARD

Wird gesendet, wenn der Websocket eine STANDARD-Kanalnachricht empfängt.

CONTROL

Wird gesendet, wenn der eine WebSocket CONTROL-Kanalnachricht empfängt.

SYSTEM

Alle anderen Websocket-Nachrichten, die von Amazon Chime SDK Messaging gesendet werden.

x-amz-chime-event-Grund

Dies ist ein optionaler Header, der für einen bestimmten Anwendungsfall unterstützt wird. Der Header enthält Informationen darüber, warum ein bestimmtes Ereignis empfangen wurde.

Grund des Ereignisses Beschreibung

SubChannel_Deleted

DELETE_CHANNEL_MEMBERSHIPEreignisse, die von Elastic Channel-Moderatoren empfangen wurden. Moderatoren werden nur angezeigt, nachdem der Mitgliederausgleich einen Unterkanal gelöscht hat, dem sie angehört haben.

Umgang mit Verbindungsabbrüchen

Websockets können aufgrund von Änderungen in der Netzwerkkonnektivität oder wenn Anmeldeinformationen ablaufen, getrennt werden. Nachdem Sie eine geöffnet haben WebSocket, sendet das Amazon Chime SDK regelmäßig Pings an den Messaging-Client, um sicherzustellen, dass er weiterhin verbunden ist. Wenn die Verbindung geschlossen wird, erhält der Client einen WebSocket Schließcode. Der Client kann je nach Schließcode versuchen, die Verbindung wiederherzustellen oder nicht. In den folgenden Tabellen sind die Schließcodes aufgeführt, mit denen der Client die Verbindung wiederherstellen kann.

Stellen Sie bei den Schließungscodes 1000 bis 4000 die Verbindung nur für die folgenden Meldungen wieder her:

Schließungscodes

Kann die Verbindung wieder herstellen

Grund

1001

Ja

Normaler Verschluss

1006

Ja

Abnormaler Verschluss

1011

Ja

Interner Serverfehler

1012

Ja

Dienst neu starten

1013

Ja

Versuchen Sie es später erneut

1014

Ja

Der Server fungierte als Gateway oder Proxy und erhielt eine ungültige Antwort vom Upstream-Server. Dies ähnelt dem 502-HTTP-Statuscode.

Stellen Sie bei 4XXX-Codes immer wieder eine Verbindung her, mit Ausnahme der folgenden Meldungen:

Schließungscodes

Kann die Verbindung wieder herstellen

Grund

4002

Nein

Der Kunde wurde initiiert

4003

Nein

Forbidden

4401

Nein

Nicht autorisiert.

Wenn die Anwendung einen Code zum Schließen verwendet, um die Verbindung wiederherzustellen, sollte die Anwendung:

  1. Rufen Sie den GetMessagingSessionEndpointAPI erneut, um eine neue Basis-URL zu erhalten.

  2. Aktualisieren Sie die IAM-Anmeldeinformationen, falls sie abgelaufen sind.

  3. Connect über die WebSocket.

Wenn Sie die amazon-chime-sdk-js Bibliothek verwenden, wird dies für Sie erledigt, wenn Sie die Eigenschaft needsRefresh () und die Methode refresh () implementieren. Ein funktionierendes Beispiel finden Sie unter https://github.com/aws-samples/amazon-chime-sdk/blob/dc11c4c76c78d28f618577706bba2087919a5635/apps/chat/src/providers/AuthProvider.jsx #L93 -L101.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.