リージョン ID
REGION_ID
は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r
が App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。
詳しくは、リージョン ID をご覧ください。
Pub/Sub は、信頼できる多対多の非同期メッセージングをアプリケーション間で行います。パブリッシャー アプリケーションはメッセージをトピックに送信し、その他のアプリケーションはそのトピックにサブスクライブしてメッセージを受信できます。
このドキュメントでは、Cloud クライアント ライブラリを使用して、App Engine アプリで Pub/Sub メッセージを送受信する方法を説明します。 このガイドのサンプル アプリケーションは、app.yaml
ファイルでランタイム バージョンとオペレーティング システムを指定することで、サポートされている Python のバージョンで使用できます。
前提条件
- 選択したランタイム用のアプリをビルドする手順に沿って、環境とプロジェクトを設定し、App Engine アプリの構造を理解します。
- このドキュメントで説明しているサンプルアプリを実行する際に必要となるため、プロジェクト ID を書き留めておきます。
- アプリケーションで使用するサービス アカウントとサービス アカウント キーを作成します。
-
Enable the Google Cloud Pub/Sub API.
サンプルアプリのクローン作成
サンプルアプリをローカルマシンにコピーし、pubsub
ディレクトリに移動します。
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
トピックとサブスクリプションを作成する
トピックとサブスクリプションを作成します。Pub/Sub サーバーがリクエストを送信するエンドポイントも指定します。
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
YOUR_TOKEN
は、ランダムなシークレット トークンで置き換えます。push エンドポイントがこれを使用してリクエストを検証します。
Pub/Sub を認証で使用するには、別のサブスクリプションを作成します。
# 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'
YOUR-SERVICE-ACCOUNT-EMAIL
は、サービス アカウントのメールアドレスに置き換えます。
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
YOUR_TOKEN
は、ランダムなシークレット トークンで置き換えます。push エンドポイントがこれを使用してリクエストを検証します。
Pub/Sub を認証で使用するには、別のサブスクリプションを作成します。
# 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'
YOUR-SERVICE-ACCOUNT-EMAIL
は、サービス アカウントのメールアドレスに置き換えます。
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
YOUR_TOKEN
は、ランダムなシークレット トークンで置き換えます。push エンドポイントがこれを使用してリクエストを検証します。
Pub/Sub を認証で使用するには、別のサブスクリプションを作成します。
# 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'
YOUR-SERVICE-ACCOUNT-EMAIL
は、サービス アカウントのメールアドレスに置き換えます。
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
YOUR_TOKEN
は、ランダムなシークレット トークンで置き換えます。push エンドポイントがこれを使用してリクエストを検証します。
Pub/Sub を認証で使用するには、別のサブスクリプションを作成します。
# 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'
YOUR-SERVICE-ACCOUNT-EMAIL
は、サービス アカウントのメールアドレスに置き換えます。
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
YOUR_TOKEN
は、ランダムなシークレット トークンで置き換えます。push エンドポイントがこれを使用してリクエストを検証します。
Pub/Sub を認証で使用するには、別のサブスクリプションを作成します。
# 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'
YOUR-SERVICE-ACCOUNT-EMAIL
は、サービス アカウントのメールアドレスに置き換えます。
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
YOUR_TOKEN
は、ランダムなシークレット トークンで置き換えます。push エンドポイントがこれを使用してリクエストを検証します。
Pub/Sub を認証で使用するには、別のサブスクリプションを作成します。
# 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'
YOUR-SERVICE-ACCOUNT-EMAIL
は、サービス アカウントのメールアドレスに置き換えます。
.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
YOUR_TOKEN
は、ランダムなシークレット トークンで置き換えます。push エンドポイントがこれを使用してリクエストを検証します。
Pub/Sub を認証で使用するには、別のサブスクリプションを作成します。
# 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'
YOUR-SERVICE-ACCOUNT-EMAIL
は、サービス アカウントのメールアドレスに置き換えます。
環境変数を設定する
Go
app.yaml
ファイルを編集して、トピックと検証トークンの各環境変数を設定します。
Java
app.yaml
ファイルを編集して、トピックと検証トークンの各環境変数を設定します。
Node.js
app.yaml
ファイルを編集して、トピックと検証トークンの各環境変数を設定します。
PHP
index.php
ファイルを編集して、トピックとサブスクリプションの環境変数を設定します。
Python
app.yaml
を編集して、プロジェクト ID、トピック、検証トークンの各環境変数を設定します。
Ruby
app.yaml
を編集して、プロジェクト ID、トピック、検証トークンの各環境変数を設定します。
.NET
app.yaml
ファイルを編集して、トピックと検証トークンの各環境変数を設定します。
コードのレビュー
サンプルアプリでは、Pub/Sub クライアント ライブラリを使用しています。
Go
このサンプルアプリでは、構成用として app.yaml
ファイルに設定された環境変数(PUBSUB_TOPIC
と PUBSUB_VERIFICATION_TOKEN
)を使用します。
このインスタンスが受信したメッセージがスライスに格納されます。
messages []string
pushHandler
関数は、push されたメッセージを受信してトークンを検証し、メッセージを messages
スライスに追加します。
publishHandler
関数は、新しいメッセージをトピックに公開します。
Java
このサンプルアプリでは、app.yaml
ファイルに設定された値を使用して環境変数を構成します。push リクエスト ハンドラは、これらの値を使用して、リクエストが Pub/Sub からのものであり、信頼できる送信元から送信されていることを確認します。
String pubsubVerificationToken = System.getenv("PUBSUB_VERIFICATION_TOKEN");
このサンプルアプリでは、メッセージを格納する Cloud Datastore データベース インスタンスを保守します。サーブレット PubSubPush
は、push されたメッセージを受信して、messageRepository
データベース インスタンスに追加します。
バージョン 11/17
バージョン 8
PubSubPublish
サーブレットは App Engine ウェブアプリと連携して新しいメッセージを公開し、受信したメッセージを表示します。
Node.js
このサンプルアプリでは、app.yaml
ファイルに設定された値を使用して環境変数を構成します。push リクエスト ハンドラは、これらの値を使用して、リクエストが Pub/Sub からのものであり、信頼できる送信元から送信されていることを確認します。
// 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);
このサンプルアプリは、このインスタンスで受信したメッセージをグローバル リストに保存します。
// List of all messages received by this instance
var messages = [];
このメソッドは、push されたメッセージを受信し、messages
グローバル リストに追加します。
このメソッドは、App Engine ウェブアプリと連携して新しいメッセージを公開し、受信したメッセージを表示します。
PHP
このサンプルアプリでは、app.yaml
ファイルに設定された値を使用して環境変数を構成します。push リクエスト ハンドラは、これらの値を使用して、リクエストが Pub/Sub からのものであり、信頼できる送信元から送信されていることを確認します。
このサンプルアプリは、このインスタンスで受信したメッセージをグローバル リストに保存します。
$messages = [];
pull
メソッドは、作成したトピックからメッセージを取得し、メッセージ リストに追加します。
publish
メソッドは、新しいメッセージをトピックに公開します。
Python
このサンプルアプリでは、app.yaml
ファイルに設定された値を使用して環境変数を構成します。push リクエスト ハンドラは、これらの値を使用して、Pub/Sub からのリクエストで、信頼できる送信元から送信されていることを確認します。
app.config['PUBSUB_VERIFICATION_TOKEN'] = \
os.environ['PUBSUB_VERIFICATION_TOKEN']
app.config['PUBSUB_TOPIC'] = os.environ['PUBSUB_TOPIC']
このサンプルアプリは、このインスタンスで受信したメッセージをグローバル リストに保存します。
MESSAGES = []
pubsub_push()
メソッドは、push されたメッセージを受信し、MESSAGES
グローバル リストに追加します。
index()
メソッドは、App Engine ウェブアプリと連携して新しいメッセージを公開し、受信したメッセージを表示します。
Ruby
このサンプルアプリでは、app.yaml
ファイルに設定された値を使用して環境変数を構成します。push リクエスト ハンドラは、これらの値を使用して、リクエストが Pub/Sub からのものであり、信頼できる送信元から送信されていることを確認します。
このサンプルアプリは、このインスタンスで受信したメッセージをグローバル リストに保存します。
このメソッドは、push されたメッセージを受信し、messages
グローバル リストに追加します。
このメソッドは、App Engine ウェブアプリと連携して新しいメッセージを公開し、受信したメッセージを表示します。
.NET
サンプルのローカルでの実行
ローカルで実行する場合、Google Cloud CLI で Google Cloud APIs を使用するための認証を行うことができます。前提条件に記載されているとおりに環境をセットアップしていれば、この認証のための gcloud init
コマンドはすでに実行されています。
Go
アプリケーションを起動する前に環境変数を設定します。
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
アプリケーションを起動する前に環境変数を設定します。
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
mvn jetty:run
Node.js
アプリケーションを起動する前に環境変数を設定します。
export GOOGLE_CLOUD_PROJECT=[your-project-id]
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
npm install
npm start
PHP
Composer を使用して依存関係をインストールします。
composer install
次に、アプリケーションを起動する前に環境変数を設定します。
export GOOGLE_CLOUD_PROJECT=[your-project-id]
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
php -S localhost:8080
Python
可能であれば、依存関係を仮想環境にインストールします。
Mac OS / Linux
- 分離された Python 環境を作成します。
python3 -m venv env
source env/bin/activate
- 現在のディレクトリにサンプルコードが含まれていない場合は、
hello_world
サンプルコードが含まれるディレクトリに移動します。それから依存関係をインストールします。cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
Windows
PowerShell を使用して Python パッケージを実行します。
- インストールされた PowerShell を探します。
- PowerShell へのショートカットを右クリックし、管理者として PowerShell を起動します。
- 分離された Python 環境を作成します。
python -m venv env
.\env\Scripts\activate
- プロジェクト ディレクトリに移動し、依存関係をインストールします。サンプルコードが含まれるディレクトリにいない場合は、
hello_world
サンプルコードが含まれるディレクトリに移動します。それから依存関係をインストールします。cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
次に、アプリケーションを起動する前に環境変数を設定します。
export GOOGLE_CLOUD_PROJECT=[your-project-id]
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
python main.py
Ruby
依存関係をインストールします。
bundle install
次に、アプリケーションを起動する前に環境変数を設定します。
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
アプリケーションのルート ディレクトリから次のコマンドを実行します。
dotnet restore
dotnet run
ウェブブラウザに「http://localhost:5000/」と入力します。 ウェブサーバーを終了するには、ターミナル ウィンドウで Ctrl+C キーを押します。
プッシュ通知のシミュレート
アプリケーションは、ローカルでメッセージを送信できますが、push メッセージを受信することはできません。push メッセージをシミュレートするには、ローカルのプッシュ通知エンドポイントに HTTP リクエストを送信します。このサンプルには、sample_message.json
というファイルが含まれています。
Go
curl
または httpie
クライアントを使用して、HTTP POST
リクエストを送信できます。
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/push-handlers/receive_messages?token=[your-token]"
または
http POST ":8080/push-handlers/receive_messages?token=[your-token]" < sample_message.json
対応:
HTTP/1.1 200 OK
Date: Tue, 13 Nov 2018 16:04:18 GMT
Content-Length: 0
リクエストの完了後、localhost:8080
を更新すると、受信メッセージのリストにメッセージが表示されます。
Java
curl
または httpie
クライアントを使用して、HTTP POST
リクエストを送信できます。
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/push-handlers/receive_messages?token=[your-token]"
または
http POST ":8080/push-handlers/receive_messages?token=[your-token]" < sample_message.json
対応:
HTTP/1.1 200 OK
Date: Wed, 26 Apr 2017 00:03:28 GMT
Content-Length: 0
Server: Jetty(9.3.8.v20160314)
リクエストの完了後、localhost:8080
を更新すると、受信メッセージのリストにメッセージが表示されます。
Node.js
curl
または httpie
クライアントを使用して、HTTP POST
リクエストを送信できます。
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/push-handlers/receive_messages?token=[your-token]"
または
http POST ":8080/push-handlers/receive_messages?token=[your-token]" < sample_message.json
対応:
HTTP/1.1 200 OK
Connection: keep-alive
Date: Mon, 31 Aug 2015 22:19:50 GMT
Transfer-Encoding: chunked
X-Powered-By: Express
リクエストの完了後、localhost:8080
を更新すると、受信メッセージのリストにメッセージが表示されます。
PHP
curl
または httpie
クライアントを使用して、HTTP POST
リクエストを送信できます。
curl -i --data @sample_message.json "localhost:4567/push-handlers/receive_messages?token=[your-token]"
または
http POST ":4567/push-handlers/receive_messages?token=[your-token]" < sample_message.json
リクエストの完了後、localhost:8080
を更新すると、受信メッセージのリストにメッセージが表示されます。
Python
curl
または httpie
クライアントを使用して、HTTP POST
リクエストを送信できます。
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/pubsub/push?token=[your-token]"
または
http POST ":8080/pubsub/push?token=[your-token]" < sample_message.json
対応:
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
リクエストの完了後、localhost:8080
を更新すると、受信メッセージのリストにメッセージが表示されます。
Ruby
curl
または httpie
クライアントを使用して、HTTP POST
リクエストを送信できます。
curl -i --data @sample_message.json "localhost:4567/push-handlers/receive_messages?token=[your-token]"
または
http POST ":4567/push-handlers/receive_messages?token=[your-token]" < sample_message.json
対応:
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!
リクエストの完了後、localhost:8080
を更新すると、受信メッセージのリストにメッセージが表示されます。
.NET
HTTP POST
リクエストを送信するには、次のコマンドを実行します。
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
リクエストの完了後、localhost:5000
を更新すると、受信メッセージのリストにメッセージが表示されます。
App Engine で実行する
gcloud
コマンドライン ツールを使用してデモアプリを App Engine にデプロイするには:
Go
app.yaml
ファイルが配置されているディレクトリから次のコマンドを実行します。
gcloud app deploy
Java
Maven を使用してアプリをデプロイするには、次のコマンドを実行します。
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。 pom.xml
ファイルですでにプロジェクト ID を指定している場合は、実行するコマンドに -Dapp.deploy.projectId
プロパティを含める必要はありません。
Node.js
app.yaml
ファイルが配置されているディレクトリから次のコマンドを実行します。
gcloud app deploy
PHP
app.yaml
ファイルが配置されているディレクトリから次のコマンドを実行します。
gcloud app deploy
Python
app.yaml
ファイルが配置されているディレクトリから次のコマンドを実行します。
gcloud app deploy
Ruby
app.yaml
ファイルが配置されているディレクトリから次のコマンドを実行します。
gcloud app deploy app.yaml
.NET
app.yaml
ファイルが配置されているディレクトリから次のコマンドを実行します。
gcloud app deploy
これで、https://PROJECT_ID.REGION_ID.r.appspot.com
のアプリケーションにアクセスできます。フォームを使用してメッセージを送信できますが、アプリケーションのどのインスタンスが通知を受信するかはわかりません。複数のメッセージを送信してページを更新すると、受信メッセージを確認できます。