46 lines
1.7 KiB
Markdown
46 lines
1.7 KiB
Markdown
# WebSocket Example
|
|
|
|
This example shows how simple it is to use CloudEvents over a websocket
|
|
connection. The code here shows backend communication from two server
|
|
side processes, and also between a browser and a server process.
|
|
|
|
## Running the Example
|
|
|
|
This simple project consists of a server and a client. The server receives
|
|
`CloudEvents` from the client over a local websocket connection.
|
|
|
|
|
|
To get started, first install dependencies.
|
|
|
|
```sh
|
|
npm install
|
|
```
|
|
|
|
### Server
|
|
The server opens a websocket and waits for incoming connections. It expects that any
|
|
messages it receives will be a CloudEvent. When received, it reads the data field,
|
|
expecting a zip code. It then fetches the current weather for that zip code and
|
|
responds with a CloudEvent containing the body of the Weather API response as the
|
|
event data.
|
|
|
|
You will need to change one line in the `server.js` file and provide your Open
|
|
Weather API key. You can also create a environment variable `OPEN_WEATHER_API_KEY` and store your key there.
|
|
|
|
To start the server, run `node server.js`.
|
|
|
|
### Client
|
|
Upon start, the client prompts a user for a zip code, then sends a CloudEvent over
|
|
a websocket to the server with the provided zip code as the event data. The server
|
|
fetches the current weather for that zip code and returns it as a CloudEvent. The
|
|
client extracts the data and prints the current weather to the console.
|
|
|
|
To start the client, run `node client.js`
|
|
|
|
### Browser
|
|
Open the [`index.html`]('./index.html') file in your browser and provide a zip
|
|
code in the provided form field. The browser will send the zip code in the data
|
|
field of a CloudEvent over a websocket. When it receives a response from the server
|
|
it prints the weather, or an error message, to the screen.
|
|
|
|
To terminate the client or server, type CTL-C.
|