Regions-ID
REGION_ID
ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r
in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.
Pub/Sub bietet zuverlässiges und asynchrones m:n-Messaging zwischen Anwendungen. Publisher-Anwendungen können Nachrichten an ein bestimmtes Thema senden. Andere Anwendungen haben die Möglichkeit, dieses Thema zu abonnieren, um Nachrichten dazu zu erhalten.
In diesem Dokument wird beschrieben, wie Sie mit den Cloud-Clientbibliotheken Pub/Sub-Nachrichten in einer App Engine-Anwendung senden und empfangen.Vorbereitung
- Folgen Sie der Anleitung Anwendung für die ausgewählte Laufzeit erstellen, um Ihre Umgebung und Ihr Projekt einzurichten und mehr über die Strukturierung von App Engine-Anwendungen zu erfahren.
- Notieren Sie sich Ihre Projekt-ID und bewahren Sie sie auf. Sie benötigen die ID zur Ausführung der in diesem Dokument beschriebenen Beispielanwendung.
- Erstellen Sie ein Dienstkonto und einen Dienstkontoschlüssel für Ihre Anwendung.
-
Enable the Google Cloud Pub/Sub API.
Beispiel-App klonen
Kopieren Sie die Beispielanwendungen auf Ihren lokalen Computer und rufen Sie das Verzeichnis pubsub
auf:
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
cd golang-samples/appengine_flexible/pubsub
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/flexible/java-11/pubsub/
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
cd nodejs-docs-samples/appengine/pubsub
PHP
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
cd php-docs-samples/pubsub
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
cd python-docs-samples/appengine/flexible/pubsub
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples
cd ruby-docs-samples/appengine/flexible/pubsub/
.NET
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples
cd dotnet-docs-samples/appengine/flexible/Pubsub/Pubsub.Sample
Thema und Abo erstellen
Erstellen Sie ein Thema und ein Abo und geben Sie den Endpunkt an, an den der Pub/Sub-Server Anfragen senden soll:
Go
# Configure the topic gcloud pubsub topics create YOUR_TOPIC_NAME # Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10
Ersetzen Sie YOUR_TOKEN
durch ein geheimes, zufälliges Token. Der Push-Endpunkt verwendet dieses zum Verifizieren von Anfragen.
Erstellen Sie ein weiteres Abo, um Pub/Sub mit Authentifizierung zu verwenden:
# Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-auth-service-account=YOUR-SERVICE-ACCOUNT-EMAIL\ --push-auth-token-audience=OPTIONAL_AUDIENCE_OVERRIDE\ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10 # Your service agent # `service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com` needs to have the # `iam.serviceAccountTokenCreator` role. PUBSUB_SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PUBSUB_SERVICE_ACCOUNT}"\ --role='roles/iam.serviceAccountTokenCreator'
Ersetzen Sie YOUR-SERVICE-ACCOUNT-EMAIL
durch die E-Mail-Adresse Ihres Dienstkontos.
Java
# Configure the topic gcloud pubsub topics create YOUR_TOPIC_NAME # Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10
Ersetzen Sie YOUR_TOKEN
durch ein geheimes, zufälliges Token. Der Push-Endpunkt verwendet dieses zum Verifizieren von Anfragen.
Erstellen Sie ein weiteres Abo, um Pub/Sub mit Authentifizierung zu verwenden:
# Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-auth-service-account=YOUR-SERVICE-ACCOUNT-EMAIL\ --push-auth-token-audience=OPTIONAL_AUDIENCE_OVERRIDE\ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10 # Your service agent # `service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com` needs to have the # `iam.serviceAccountTokenCreator` role. PUBSUB_SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PUBSUB_SERVICE_ACCOUNT}"\ --role='roles/iam.serviceAccountTokenCreator'
Ersetzen Sie YOUR-SERVICE-ACCOUNT-EMAIL
durch die E-Mail-Adresse Ihres Dienstkontos.
Node.js
# Configure the topic gcloud pubsub topics create YOUR_TOPIC_NAME # Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10
Ersetzen Sie YOUR_TOKEN
durch ein geheimes, zufälliges Token. Der Push-Endpunkt verwendet dieses zum Verifizieren von Anfragen.
Erstellen Sie ein weiteres Abo, um Pub/Sub mit Authentifizierung zu verwenden:
# Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-auth-service-account=YOUR-SERVICE-ACCOUNT-EMAIL\ --push-auth-token-audience=OPTIONAL_AUDIENCE_OVERRIDE\ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10 # Your service agent # `service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com` needs to have the # `iam.serviceAccountTokenCreator` role. PUBSUB_SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PUBSUB_SERVICE_ACCOUNT}"\ --role='roles/iam.serviceAccountTokenCreator'
Ersetzen Sie YOUR-SERVICE-ACCOUNT-EMAIL
durch die E-Mail-Adresse Ihres Dienstkontos.
PHP
# Configure the topic gcloud pubsub topics create YOUR_TOPIC_NAME # Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10
Ersetzen Sie YOUR_TOKEN
durch ein geheimes, zufälliges Token. Der Push-Endpunkt verwendet dieses zum Verifizieren von Anfragen.
Erstellen Sie ein weiteres Abo, um Pub/Sub mit Authentifizierung zu verwenden:
# Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-auth-service-account=YOUR-SERVICE-ACCOUNT-EMAIL\ --push-auth-token-audience=OPTIONAL_AUDIENCE_OVERRIDE\ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10 # Your service agent # `service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com` needs to have the # `iam.serviceAccountTokenCreator` role. PUBSUB_SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PUBSUB_SERVICE_ACCOUNT}"\ --role='roles/iam.serviceAccountTokenCreator'
Ersetzen Sie YOUR-SERVICE-ACCOUNT-EMAIL
durch die E-Mail-Adresse Ihres Dienstkontos.
Python
# Configure the topic gcloud pubsub topics create YOUR_TOPIC_NAME # Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10
Ersetzen Sie YOUR_TOKEN
durch ein geheimes, zufälliges Token. Der Push-Endpunkt verwendet dieses zum Verifizieren von Anfragen.
Erstellen Sie ein weiteres Abo, um Pub/Sub mit Authentifizierung zu verwenden:
# Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-auth-service-account=YOUR-SERVICE-ACCOUNT-EMAIL\ --push-auth-token-audience=OPTIONAL_AUDIENCE_OVERRIDE\ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10 # Your service agent # `service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com` needs to have the # `iam.serviceAccountTokenCreator` role. PUBSUB_SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PUBSUB_SERVICE_ACCOUNT}"\ --role='roles/iam.serviceAccountTokenCreator'
Ersetzen Sie YOUR-SERVICE-ACCOUNT-EMAIL
durch die E-Mail-Adresse Ihres Dienstkontos.
Ruby
# Configure the topic gcloud pubsub topics create YOUR_TOPIC_NAME # Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10
Ersetzen Sie YOUR_TOKEN
durch ein geheimes, zufälliges Token. Der Push-Endpunkt verwendet dieses zum Verifizieren von Anfragen.
Erstellen Sie ein weiteres Abo, um Pub/Sub mit Authentifizierung zu verwenden:
# Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-auth-service-account=YOUR-SERVICE-ACCOUNT-EMAIL\ --push-auth-token-audience=OPTIONAL_AUDIENCE_OVERRIDE\ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10 # Your service agent # `service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com` needs to have the # `iam.serviceAccountTokenCreator` role. PUBSUB_SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PUBSUB_SERVICE_ACCOUNT}"\ --role='roles/iam.serviceAccountTokenCreator'
Ersetzen Sie YOUR-SERVICE-ACCOUNT-EMAIL
durch die E-Mail-Adresse Ihres Dienstkontos.
.NET
# Configure the topic gcloud pubsub topics create YOUR_TOPIC_NAME # Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10
Ersetzen Sie YOUR_TOKEN
durch ein geheimes, zufälliges Token. Der Push-Endpunkt verwendet dieses zum Verifizieren von Anfragen.
Erstellen Sie ein weiteres Abo, um Pub/Sub mit Authentifizierung zu verwenden:
# Configure the push subscription gcloud pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \ --topic=YOUR_TOPIC_NAME \ --push-auth-service-account=YOUR-SERVICE-ACCOUNT-EMAIL\ --push-auth-token-audience=OPTIONAL_AUDIENCE_OVERRIDE\ --push-endpoint=https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/push-handlers/receive_messages?token=YOUR_TOKEN \ --ack-deadline=10 # Your service agent # `service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com` needs to have the # `iam.serviceAccountTokenCreator` role. PUBSUB_SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PUBSUB_SERVICE_ACCOUNT}"\ --role='roles/iam.serviceAccountTokenCreator'
Ersetzen Sie YOUR-SERVICE-ACCOUNT-EMAIL
durch die E-Mail-Adresse Ihres Dienstkontos.
Umgebungsvariablen festlegen
Go
Bearbeiten Sie die Datei app.yaml
, um die Umgebungsvariablen für Ihr Thema und das Verifizierungstoken festzulegen:
Java
Bearbeiten Sie die Datei app.yaml
, um die Umgebungsvariablen für Ihr Thema und das Verifizierungstoken festzulegen:
Node.js
Bearbeiten Sie die Datei app.yaml
, um die Umgebungsvariablen für Ihr Thema und das Verifizierungstoken festzulegen:
PHP
Bearbeiten Sie die Datei index.php
, um die Umgebungsvariablen für Ihr Thema und das Abo festzulegen:
Python
Legen Sie in der Datei app.yaml
die Umgebungsvariablen für die Projekt-ID, das Thema und das Bestätigungstoken fest:
Ruby
Legen Sie in der Datei app.yaml
die Umgebungsvariablen für die Projekt-ID, das Thema und das Bestätigungstoken fest:
.NET
Bearbeiten Sie die app.yaml
-Datei, um die Umgebungsvariablen für Ihr Thema und das Verifizierungstoken festzulegen:
Code Review
In der Beispielanwendung kommt die Pub/Sub-Clientbibliothek zum Einsatz.
Go
Die Beispielanwendung verwendet die Umgebungsvariablen, die Sie in der Datei app.yaml
(PUBSUB_TOPIC
und PUBSUB_VERIFICATION_TOKEN
) für die Konfiguration festgelegt haben.
Die von dieser Instanz empfangenen Nachrichten werden in einem Segment gespeichert:
messages []string
Die pushHandler
- Funktion empfängt Push-Nachrichten, verifiziert das Token und fügt die Nachricht dem Segment messages
hinzu:
Die Funktion publishHandler
veröffentlicht neue Nachrichten zum Thema.
Java
Die Beispielanwendung verwendet die in der Datei app.yaml
festgelegten Werte zum Konfigurieren von Umgebungsvariablen. Auf der Grundlage dieser Werte bestätigt der Push-Anfrage-Handler, dass die Anfrage von Pub/Sub kommt und aus einer vertrauenswürdigen Quelle stammt:
String pubsubVerificationToken = System.getenv("PUBSUB_VERIFICATION_TOKEN");
Die Beispielanwendung verwaltet eine Cloud Datastore-Datenbankinstanz zum Speichern von Nachrichten.
Das PubSubPush
-Servlet empfängt Push-Nachrichten und fügt sie der messageRepository
-Datenbankinstanz hinzu:
Version 11/17
Version 8
Das PubSubPublish
-Servlet interagiert mit der App Engine-Webanwendung, um neue Nachrichten zu veröffentlichen und empfangene Nachrichten anzuzeigen:
Node.js
Die Beispielanwendung verwendet die in der Datei app.yaml
festgelegten Werte zum Konfigurieren von Umgebungsvariablen. Auf der Grundlage dieser Werte bestätigt der Push-Anfrage-Handler, dass die Anfrage von Pub/Sub kommt und aus einer vertrauenswürdigen Quelle stammt:
// The following environment variables are set by the `app.yaml` file when
// running on App Engine, but will need to be manually set when running locally.
var PUBSUB_VERIFICATION_TOKEN = process.env.PUBSUB_VERIFICATION_TOKEN;
var pubsub = gcloud.pubsub({
projectId: process.env.GOOGLE_CLOUD_PROJECT
});
var topic = pubsub.topic(process.env.PUBSUB_TOPIC);
Die Beispielanwendung verwaltet eine globale Liste zum Speichern der von dieser Instanz empfangenen Nachrichten:
// List of all messages received by this instance
var messages = [];
Diese Methode empfängt Push-Nachrichten und fügt sie der globalen Liste messages
hinzu:
Diese Methode interagiert mit der App Engine-Webanwendung, um neue Nachrichten zu veröffentlichen und empfangene Nachrichten anzuzeigen:
PHP
Die Beispielanwendung verwendet die in der Datei app.yaml
festgelegten Werte zum Konfigurieren von Umgebungsvariablen. Anhand dieser Werte bestätigt der Push-Anfragen-Handler, dass die Anfrage von Pub/Sub kommt und aus einer vertrauenswürdigen Quelle stammt:
Die Beispielanwendung verwaltet eine globale Liste zum Speichern der von dieser Instanz empfangenen Nachrichten:
$messages = [];
Mit der pull
-Methode werden Nachrichten aus dem von Ihnen erstellten Thema abgerufen und der Nachrichtenliste hinzugefügt:
Mit der Methode publish
werden neue Nachrichten für das Thema veröffentlicht:
Python
Die Beispielanwendung verwendet die in der Datei app.yaml
festgelegten Werte zum Konfigurieren von Umgebungsvariablen. Anhand dieser Werte bestätigt der Push-Anfragen-Handler, dass die Anfrage von Pub/Sub kommt und aus einer vertrauenswürdigen Quelle stammt:
app.config['PUBSUB_VERIFICATION_TOKEN'] = \
os.environ['PUBSUB_VERIFICATION_TOKEN']
app.config['PUBSUB_TOPIC'] = os.environ['PUBSUB_TOPIC']
Die Beispielanwendung verwaltet eine globale Liste zum Speichern der von dieser Instanz empfangenen Nachrichten:
MESSAGES = []
Die Methode pubsub_push()
empfängt Push-Nachrichten und fügt sie der globalen Liste MESSAGES
hinzu:
Die Methode index()
interagiert mit der App Engine-Webanwendung, um neue Nachrichten zu veröffentlichen und empfangene Nachrichten anzuzeigen:
Ruby
Die Beispielanwendung verwendet die in der Datei app.yaml
festgelegten Werte zum Konfigurieren von Umgebungsvariablen. Anhand dieser Werte bestätigt der Push-Anfragen-Handler, dass die Anfrage von Pub/Sub kommt und aus einer vertrauenswürdigen Quelle stammt:
Die Beispielanwendung verwaltet eine globale Liste zum Speichern der von dieser Instanz empfangenen Nachrichten:
Diese Methode empfängt Push-Nachrichten und fügt sie der globalen Liste messages
hinzu:
Diese Methode interagiert mit der App Engine-Webanwendung, um neue Nachrichten zu veröffentlichen und empfangene Nachrichten anzuzeigen:
.NET
Beispiel lokal ausführen
Bei einer lokalen Ausführung können Sie mit der Google Cloud CLI eine Authentifizierung für die Nutzung von Google Cloud APIs bereitstellen. Wenn Sie Ihre Umgebung wie unter Voraussetzungen beschrieben eingerichtet haben, wurde der gcloud init
-Befehl zur Bereitstellung dieser Authentifizierung bereits ausgeführt.
Go
Legen Sie vor dem Starten Ihrer Anwendung Umgebungsvariablen fest:
export GOOGLE_CLOUD_PROJECT=[your-project-id]
export PUBSUB_VERIFICATION_TOKEN=[your-token]
export PUBSUB_TOPIC=[your-topic]
go run pubsub.go
Java
mvn clean package
Legen Sie vor dem Starten Ihrer Anwendung Umgebungsvariablen fest:
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
mvn jetty:run
Node.js
Legen Sie vor dem Starten Ihrer Anwendung Umgebungsvariablen fest:
export GOOGLE_CLOUD_PROJECT=[your-project-id]
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
npm install
npm start
PHP
Installieren Sie Abhängigkeiten mithilfe von Composer:
composer install
Legen Sie vor dem Starten Ihrer Anwendung Umgebungsvariablen fest:
export GOOGLE_CLOUD_PROJECT=[your-project-id]
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
php -S localhost:8080
Python
Installieren Sie Abhängigkeiten, vorzugsweise in einer virtuellen Umgebung.
Mac OS/Linux
- Erstellen Sie eine isolierte Python-Umgebung:
python3 -m venv env
source env/bin/activate
- Wenn Sie sich nicht in dem Verzeichnis befinden, das den Beispielcode enthält, wechseln Sie zu dem Verzeichnis, das den Beispielcode
hello_world
enthält: Installieren Sie dann Abhängigkeiten:cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
Windows
Führen Sie Ihre Python-Pakete mit PowerShell aus.
- Wechseln Sie zu Ihrer Installation von PowerShell.
- Klicken Sie mit der rechten Maustaste auf die Verknüpfung zu PowerShell und starten Sie diese als Administrator.
- Erstellen Sie eine isolierte Python-Umgebung.
python -m venv env
.\env\Scripts\activate
- Gehen Sie zu Ihrem Projektverzeichnis und installieren Sie die Abhängigkeiten: Wenn Sie sich nicht in dem Verzeichnis befinden, das den Beispielcode enthält, wechseln Sie zum Verzeichnis mit dem Beispielcode
hello_world
. Installieren Sie dann Abhängigkeiten:cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
Legen Sie vor dem Starten Ihrer Anwendung Umgebungsvariablen fest:
export GOOGLE_CLOUD_PROJECT=[your-project-id]
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
python main.py
Ruby
Installieren Sie die Abhängigkeiten:
bundle install
Legen Sie vor dem Starten Ihrer Anwendung Umgebungsvariablen fest:
export GOOGLE_CLOUD_PROJECT=[your-project-id]
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
bundle exec ruby app.rb -p 8080
.NET
Führen Sie die folgenden Befehle im Stammverzeichnis Ihrer Anwendung aus:
dotnet restore
dotnet run
Geben Sie im Webbrowser die folgende Adresse ein: http://localhost:5000/. Drücken Sie im Terminalfenster Strg+C, um den Webserver zu beenden.
Push-Benachrichtigungen simulieren
Die Anwendung kann Nachrichten lokal senden, aber keine Push-Nachrichten lokal empfangen. Sie können jedoch eine Push-Nachricht simulieren, wenn Sie eine HTTP-Anfrage an den lokalen Push-Benachrichtigungsendpunkt senden. Das Beispiel enthält die Datei sample_message.json
.
Go
Sie verwenden curl
oder einen httpie
-Client, um eine HTTP-Anfrage vom Typ POST
zu senden:
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/push-handlers/receive_messages?token=[your-token]"
Oder
http POST ":8080/push-handlers/receive_messages?token=[your-token]" < sample_message.json
Antwort:
HTTP/1.1 200 OK
Date: Tue, 13 Nov 2018 16:04:18 GMT
Content-Length: 0
Nachdem die Anfrage abgeschlossen ist, können Sie localhost:8080
aktualisieren und die Nachricht in der Liste der empfangenen Nachrichten sehen.
Java
Sie verwenden curl
oder einen httpie
-Client, um eine HTTP-Anfrage vom Typ POST
zu senden:
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/push-handlers/receive_messages?token=[your-token]"
Oder
http POST ":8080/push-handlers/receive_messages?token=[your-token]" < sample_message.json
Antwort:
HTTP/1.1 200 OK
Date: Wed, 26 Apr 2017 00:03:28 GMT
Content-Length: 0
Server: Jetty(9.3.8.v20160314)
Nachdem die Anfrage abgeschlossen ist, können Sie localhost:8080
aktualisieren und die Nachricht in der Liste der empfangenen Nachrichten sehen.
Node.js
Sie verwenden curl
oder einen httpie
-Client, um eine HTTP-Anfrage vom Typ POST
zu senden:
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/push-handlers/receive_messages?token=[your-token]"
Oder
http POST ":8080/push-handlers/receive_messages?token=[your-token]" < sample_message.json
Antwort:
HTTP/1.1 200 OK
Connection: keep-alive
Date: Mon, 31 Aug 2015 22:19:50 GMT
Transfer-Encoding: chunked
X-Powered-By: Express
Nachdem die Anfrage abgeschlossen ist, können Sie localhost:8080
aktualisieren und die Nachricht in der Liste der empfangenen Nachrichten sehen.
PHP
Sie verwenden curl
oder einen httpie
-Client, um eine HTTP-Anfrage vom Typ POST
zu senden:
curl -i --data @sample_message.json "localhost:4567/push-handlers/receive_messages?token=[your-token]"
Oder
http POST ":4567/push-handlers/receive_messages?token=[your-token]" < sample_message.json
Nachdem die Anfrage abgeschlossen ist, können Sie localhost:8080
aktualisieren und die Nachricht in der Liste der empfangenen Nachrichten sehen.
Python
Sie verwenden curl
oder einen httpie
-Client, um eine HTTP-Anfrage vom Typ POST
zu senden:
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/pubsub/push?token=[your-token]"
Oder
http POST ":8080/pubsub/push?token=[your-token]" < sample_message.json
Antwort:
HTTP/1.0 200 OK
Content-Length: 2
Content-Type: text/html; charset=utf-8
Date: Mon, 10 Aug 2015 17:52:03 GMT
Server: Werkzeug/0.10.4 Python/2.7.10
OK
Nachdem die Anfrage abgeschlossen ist, können Sie localhost:8080
aktualisieren und die Nachricht in der Liste der empfangenen Nachrichten sehen.
Ruby
Sie verwenden curl
oder einen httpie
-Client, um eine HTTP-Anfrage vom Typ POST
zu senden:
curl -i --data @sample_message.json "localhost:4567/push-handlers/receive_messages?token=[your-token]"
Oder
http POST ":4567/push-handlers/receive_messages?token=[your-token]" < sample_message.json
Antwort:
HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Content-Length: 13
X-Xss-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Server: WEBrick/1.3.1 (Ruby/2.3.0/2015-12-25)
Date: Wed, 20 Apr 2016 20:56:23 GMT
Connection: Keep-Alive
Hello, World!
Nachdem die Anfrage abgeschlossen ist, können Sie localhost:8080
aktualisieren und die Nachricht in der Liste der empfangenen Nachrichten sehen.
.NET
So senden Sie eine HTTP-POST
-Anfrage:
Get-Content -Raw .\sample_message.json | Invoke-WebRequest -Uri
http://localhost:5000/Push?token=your-secret-token -Method POST -ContentType
'text/json' -OutFile out.txt
Nachdem die Anfrage abgeschlossen ist, können Sie localhost:5000
aktualisieren und die Nachricht in der Liste der empfangenen Nachrichten sehen.
In App Engine ausführen
So stellen Sie die Demoanwendung mit dem gcloud
-Befehlszeilentool in App Engine bereit:
Go
Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem sich die Datei app.yaml
befindet:
gcloud app deploy
Java
Führen Sie den folgenden Befehl aus, um Ihre Anwendung mit Maven bereitzustellen:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts. Wenn in der Datei pom.xml
bereits Ihre Projekt-ID angegeben ist, müssen Sie das Attribut -Dapp.deploy.projectId
nicht in dem von Ihnen ausgeführten Befehl einfügen.
Node.js
Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem sich die Datei app.yaml
befindet:
gcloud app deploy
PHP
Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem sich die Datei app.yaml
befindet:
gcloud app deploy
Python
Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem sich die Datei app.yaml
befindet:
gcloud app deploy
Ruby
Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem sich die Datei app.yaml
befindet:
gcloud app deploy app.yaml
.NET
Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem sich die Datei app.yaml
befindet:
gcloud app deploy
Sie können jetzt unter https://PROJECT_ID.REGION_ID.r.appspot.com
auf die Anwendung zugreifen.
Sie können das Formular zum Senden von Nachrichten verwenden, dabei ist jedoch nicht sicher, welche Instanz Ihrer Anwendung die Benachrichtigung erhält. Außerdem haben Sie die Möglichkeit, mehrere Nachrichten zu senden und die Seite zu aktualisieren, damit die empfangene Nachricht angezeigt wird.