ID de región
REGION_ID
es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r
se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.
Obtén más información acerca de los ID de región.
Pub/Sub proporciona mensajería asíncrona, confiable y de varios a varios entre aplicaciones. Las aplicaciones de publicador pueden enviar mensajes a un tema, y otras aplicaciones pueden suscribirse a ese tema para recibir los mensajes.
En este documento, se describe cómo usar las bibliotecas cliente de Cloud para enviar y recibir mensajes de Pub/Sub en una app de App Engine. Puedes usar la aplicación de ejemplo de esta guía para cualquier versión compatible de Java, especificando la versión del entorno de ejecución y el sistema operativo en tu archivoapp.yaml
.
Requisitos previos
- Sigue las instrucciones para compilar una app en el entorno de ejecución seleccionado a fin de configurar el entorno y el proyecto, y comprender cómo se estructuran las apps de App Engine.
- Anota y guarda el ID del proyecto porque lo necesitarás para ejecutar la aplicación de muestra que se describe en este documento.
- Crea una cuenta de servicio y una clave de cuenta de servicio para usar con tu aplicación.
-
Enable the Google Cloud Pub/Sub API.
Cómo clonar la app de muestra
Copia las apps de muestra en tu máquina local y navega hasta el directorio 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
Crea un tema y una suscripción
Crea un tema y una suscripción, lo que incluye especificar el extremo al que el servidor Pub/Sub debe enviar solicitudes:
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
Reemplaza YOUR_TOKEN
con un token secreto aleatorio. El extremo lo utiliza para verificar las solicitudes.
Para usar Pub/Sub con autenticación, crea otra suscripción:
# 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'
Reemplaza YOUR-SERVICE-ACCOUNT-EMAIL
por el correo electrónico de tu cuenta de servicio.
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
Reemplaza YOUR_TOKEN
con un token secreto aleatorio. El extremo lo utiliza para verificar las solicitudes.
Para usar Pub/Sub con autenticación, crea otra suscripción:
# 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'
Reemplaza YOUR-SERVICE-ACCOUNT-EMAIL
por el correo electrónico de tu cuenta de servicio.
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
Reemplaza YOUR_TOKEN
con un token secreto aleatorio. El extremo lo utiliza para verificar las solicitudes.
Para usar Pub/Sub con autenticación, crea otra suscripción:
# 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'
Reemplaza YOUR-SERVICE-ACCOUNT-EMAIL
por el correo electrónico de tu cuenta de servicio.
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
Reemplaza YOUR_TOKEN
con un token secreto aleatorio. El extremo lo utiliza para verificar las solicitudes.
Para usar Pub/Sub con autenticación, crea otra suscripción:
# 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'
Reemplaza YOUR-SERVICE-ACCOUNT-EMAIL
por el correo electrónico de tu cuenta de servicio.
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
Reemplaza YOUR_TOKEN
con un token secreto aleatorio. El extremo lo utiliza para verificar las solicitudes.
Para usar Pub/Sub con autenticación, crea otra suscripción:
# 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'
Reemplaza YOUR-SERVICE-ACCOUNT-EMAIL
por el correo electrónico de tu cuenta de servicio.
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
Reemplaza YOUR_TOKEN
con un token secreto aleatorio. El extremo lo utiliza para verificar las solicitudes.
Para usar Pub/Sub con autenticación, crea otra suscripción:
# 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'
Reemplaza YOUR-SERVICE-ACCOUNT-EMAIL
por el correo electrónico de tu cuenta de servicio.
.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
Reemplaza YOUR_TOKEN
con un token secreto aleatorio. El extremo lo utiliza para verificar las solicitudes.
Para usar Pub/Sub con autenticación, crea otra suscripción:
# 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'
Reemplaza YOUR-SERVICE-ACCOUNT-EMAIL
por el correo electrónico de tu cuenta de servicio.
Configure variables de entorno
Go
Edita el archivo app.yaml
a fin de establecer las variables de entorno para tu tema y token de verificación:
Java
Edita el archivo app.yaml
a fin de establecer las variables de entorno para tu tema y token de verificación:
Node.js
Edita el archivo app.yaml
a fin de establecer las variables de entorno para tu tema y token de verificación:
PHP
Edita tu archivo index.php
a fin de establecer las variables de entorno para tu tema y suscripción:
Python
Edita el archivo app.yaml
a fin de establecer las variables de entorno para el tema, el token de verificación y el ID del proyecto:
Ruby
Edita el archivo app.yaml
a fin de establecer las variables de entorno para el tema, el token de verificación y el ID del proyecto:
.NET
Edita el archivo app.yaml
a fin de establecer las variables de entorno para el tema y el token de verificación:
Revisión de código
La app de muestra usa la biblioteca cliente de Pub/Sub.
Go
La aplicación de muestra utiliza las variables de entorno que estableciste en el archivo app.yaml
(PUBSUB_TOPIC
y PUBSUB_VERIFICATION_TOKEN
) para la configuración.
Los mensajes recibidos por esta instancia se almacenan en una porción:
messages []string
La función pushHandler
recibe mensajes enviados, verifica el token y
agrega el mensaje a la porción messages
:
La función publishHandler
publica nuevos mensajes en el tema.
Java
La app de muestra usa los valores que estableces en el archivo app.yaml
para configurar las variables de entorno. El controlador de las solicitudes push utiliza estos valores para confirmar que la solicitud provenga de Pub/Sub y que se origine en una fuente confiable:
String pubsubVerificationToken = System.getenv("PUBSUB_VERIFICATION_TOKEN");
La app de muestra mantiene una instancia de base de datos de Cloud Datastore para almacenar mensajes.
El servlet PubSubPush
recibe los mensajes enviados y los agrega a la instancia de base de datos messageRepository
:
versión 11/17
versión 8
El servlet PubSubPublish
interactúa con la app web de App Engine para publicar mensajes nuevos y mostrar los recibidos:
Node.js
La app de muestra usa los valores que estableces en el archivo app.yaml
para configurar las variables de entorno. El controlador de las solicitudes push utiliza estos valores para confirmar que la solicitud provenga de Pub/Sub y que se origine en una fuente confiable:
// 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);
La app de muestra mantiene una lista global a fin de almacenar los mensajes que recibe esta instancia:
// List of all messages received by this instance
var messages = [];
Este método recibe mensajes enviados y los agrega a la lista global messages
:
Este método interactúa con la aplicación web de App Engine para publicar mensajes nuevos y mostrar los recibidos.
PHP
La app de muestra usa los valores que estableces en el archivo app.yaml
para configurar las variables de entorno. El controlador de las solicitudes push utiliza estos valores para confirmar que la solicitud provenga de Pub/Sub y que se origine en una fuente confiable:
La app de muestra mantiene una lista global a fin de almacenar los mensajes que recibe esta instancia:
$messages = [];
El método pull
recupera los mensajes del tema que creaste y los agrega a la lista de mensajes:
El método publish
publica mensajes nuevos en el tema:
Python
La app de muestra usa los valores que estableces en el archivo app.yaml
para configurar las variables de entorno. El controlador de las solicitudes push usa estos valores para confirmar que la solicitud provenga de Pub/Sub y que se origine en una fuente confiable:
app.config['PUBSUB_VERIFICATION_TOKEN'] = \
os.environ['PUBSUB_VERIFICATION_TOKEN']
app.config['PUBSUB_TOPIC'] = os.environ['PUBSUB_TOPIC']
La app de muestra mantiene una lista global a fin de almacenar los mensajes que recibe esta instancia:
MESSAGES = []
El método pubsub_push()
recibe mensajes enviados y los agrega a la lista global MESSAGES
:
El método index()
interactúa con la aplicación web de App Engine para publicar mensajes nuevos y mostrar los mensajes recibidos:
Ruby
La app de muestra usa los valores que estableces en el archivo app.yaml
para configurar las variables de entorno. El controlador de las solicitudes push utiliza estos valores para confirmar que la solicitud provenga de Pub/Sub y que se origine en una fuente confiable:
La app de muestra mantiene una lista global a fin de almacenar los mensajes que recibe esta instancia:
Este método recibe mensajes enviados y los agrega a la lista global messages
:
Este método interactúa con la aplicación web de App Engine para publicar mensajes nuevos y mostrar los recibidos:
.NET
Ejecuta la muestra de forma local
En la ejecución local, puedes usar la CLI de Cloud para proporcionar autenticación a fin de emplear las APIs de Google Cloud. Si configuraste tu entorno como se describe en Requisitos, ya ejecutaste el comando gcloud init
que proporciona esta autenticación.
Go
A continuación, configura las variables de entorno antes de iniciar la aplicación:
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
A continuación, configura las variables de entorno antes de iniciar la aplicación:
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
mvn jetty:run
Node.js
A continuación, configura las variables de entorno antes de iniciar la aplicación:
export GOOGLE_CLOUD_PROJECT=[your-project-id]
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
npm install
npm start
PHP
Instala las dependencias con Composer:
composer install
A continuación, configura las variables de entorno antes de iniciar la aplicación:
export GOOGLE_CLOUD_PROJECT=[your-project-id]
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
php -S localhost:8080
Python
Instala dependencias; es preferible hacerlo en un entorno virtual.
macOS/Linux
- Crea un entorno aislado de Python:
python3 -m venv env
source env/bin/activate
- Si no estás en el directorio que contiene el código de muestra, navega al directorio que contiene el código de muestra
hello_world
. Luego, instala las dependencias:cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
Windows
Usa PowerShell para ejecutar tus paquetes de Python.
- Ubica la instalación de PowerShell.
- Haz clic derecho en el acceso directo a PowerShell y, luego, inícialo como administrador.
- Crea un entorno de Python aislado.
python -m venv env
.\env\Scripts\activate
- Navegue al directorio del proyecto y luego instale las dependencias. Si no estás en el directorio que contiene el código de muestra, navega al directorio que contiene el código de muestra
hello_world
. Luego, instala las dependencias:cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
A continuación, configura las variables de entorno antes de iniciar la aplicación:
export GOOGLE_CLOUD_PROJECT=[your-project-id]
export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
export PUBSUB_TOPIC=[your-topic]
python main.py
Ruby
Instala las dependencias:
bundle install
A continuación, configura las variables de entorno antes de iniciar la aplicación:
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
Ejecuta los siguientes comandos desde el directorio raíz de tu aplicación:
dotnet restore
dotnet run
En tu navegador web, ingresa http://localhost:5000/. Para salir del servidor web, presiona Ctrl+C en la ventana de terminal.
Simula notificaciones push
La aplicación puede enviar mensajes de forma local, pero no puede recibir mensajes push localmente. Sin embargo, puedes simular un mensaje push; para ello, envía una solicitud HTTP al extremo de notificación push local. La muestra incluye el archivo sample_message.json
.
Go
Puedes usar curl
o un cliente httpie
para enviar una solicitud HTTP POST
:
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/push-handlers/receive_messages?token=[your-token]"
O
http POST ":8080/push-handlers/receive_messages?token=[your-token]" < sample_message.json
Respuesta:
HTTP/1.1 200 OK
Date: Tue, 13 Nov 2018 16:04:18 GMT
Content-Length: 0
Una vez completada la solicitud, puedes actualizar localhost:8080
y ver el mensaje en la lista de mensajes recibidos.
Java
Puedes usar curl
o un cliente httpie
para enviar una solicitud HTTP POST
:
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/push-handlers/receive_messages?token=[your-token]"
O
http POST ":8080/push-handlers/receive_messages?token=[your-token]" < sample_message.json
Respuesta:
HTTP/1.1 200 OK
Date: Wed, 26 Apr 2017 00:03:28 GMT
Content-Length: 0
Server: Jetty(9.3.8.v20160314)
Una vez completada la solicitud, puedes actualizar localhost:8080
y ver el mensaje en la lista de mensajes recibidos.
Node.js
Puedes usar curl
o un cliente httpie
para enviar una solicitud HTTP POST
:
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/push-handlers/receive_messages?token=[your-token]"
O
http POST ":8080/push-handlers/receive_messages?token=[your-token]" < sample_message.json
Respuesta:
HTTP/1.1 200 OK
Connection: keep-alive
Date: Mon, 31 Aug 2015 22:19:50 GMT
Transfer-Encoding: chunked
X-Powered-By: Express
Una vez completada la solicitud, puedes actualizar localhost:8080
y ver el mensaje en la lista de mensajes recibidos.
PHP
Puedes usar curl
o un cliente httpie
para enviar una solicitud HTTP POST
:
curl -i --data @sample_message.json "localhost:4567/push-handlers/receive_messages?token=[your-token]"
O
http POST ":4567/push-handlers/receive_messages?token=[your-token]" < sample_message.json
Una vez completada la solicitud, puedes actualizar localhost:8080
y ver el mensaje en la lista de mensajes recibidos.
Python
Puedes usar curl
o un cliente httpie
para enviar una solicitud HTTP POST
:
curl -H "Content-Type: application/json" -i --data @sample_message.json "localhost:8080/pubsub/push?token=[your-token]"
O
http POST ":8080/pubsub/push?token=[your-token]" < sample_message.json
Respuesta:
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
Una vez completada la solicitud, puedes actualizar localhost:8080
y ver el mensaje en la lista de mensajes recibidos.
Ruby
Puedes usar curl
o un cliente httpie
para enviar una solicitud HTTP POST
:
curl -i --data @sample_message.json "localhost:4567/push-handlers/receive_messages?token=[your-token]"
O
http POST ":4567/push-handlers/receive_messages?token=[your-token]" < sample_message.json
Respuesta:
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!
Una vez completada la solicitud, puedes actualizar localhost:8080
y ver el mensaje en la lista de mensajes recibidos.
.NET
Para enviar una solicitud 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
Una vez completada la solicitud, puedes actualizar localhost:5000
y ver el mensaje en la lista de mensajes recibidos.
Ejecuta en App Engine
Para implementar la app de demostración en App Engine mediante la herramienta de línea de comandos de gcloud
, haz lo siguiente:
Go
Ejecuta el siguiente comando desde el directorio en el que se encuentra el archivo app.yaml
:
gcloud app deploy
Java
Para implementar tu aplicación con Maven, ejecuta los siguientes comandos:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud. Si tu archivo pom.xml
ya especifica tu ID del proyecto, no necesitas incluir la propiedad -Dapp.deploy.projectId
en el comando que ejecutas.
Node.js
Ejecuta el siguiente comando desde el directorio en el que se encuentra el archivo app.yaml
:
gcloud app deploy
PHP
Ejecuta el siguiente comando desde el directorio en el que se encuentra el archivo app.yaml
:
gcloud app deploy
Python
Ejecuta el siguiente comando desde el directorio en el que se encuentra el archivo app.yaml
:
gcloud app deploy
Ruby
Ejecuta el siguiente comando desde el directorio en el que se encuentra el archivo app.yaml
:
gcloud app deploy app.yaml
.NET
Ejecuta el siguiente comando desde el directorio en el que se encuentra el archivo app.yaml
:
gcloud app deploy
Ahora puedes acceder a la aplicación en
https://PROJECT_ID.REGION_ID.r.appspot.com
.
Puedes usar el formulario para enviar mensajes, pero no hay forma de garantizar qué instancia de tu aplicación recibirá la notificación. Puedes enviar varios mensajes y actualizar la página para ver el mensaje recibido.