README
Tencent Websocket Serverless Component
简体中文 | English
Introduction
Websocket Serverless Component for Tencent Cloud.
Content
1. Prepare
Initial Socket Project
create socket
entry file app.js
, it contains socket event handlers. Each handler takes two arguments, the first is the data
passed in from the client, and the second is the socket
object, which contains helpful data and methods.
// this function gets triggered on new connections
// if not provided, connections are successful by default
on('connect', async (data, socket) => {
// the following data are available in the socket object
// id represnets the connection id of a certain client
const { id, event, send } = socket
// you can return status codes directly
return 200
})
// this function gets triggered whenever a client disconnects
// if not provided, disconnection is not handled
on('disconnect', async (data, socket) => {
// e.g. business logic that removes connection ids from a db table
})
// this function gets triggered whenever a client sends data to the specified route
// in this example, you're handling the "message" route
// so clients need to send the following JSON data: { "route": "message", "data": { "foo": "bar" } }
on('message', async (data, socket) => {
// you can send data to the connected client with the send() function
await socket.send(data)
})
// this function gets triggered to handle any other data that is not handled above
on('default', async (data, socket) => {
// you can also send data to a specific connection id (that you might have saved in a table)
// this is very useful for a broadcasting functionality
await socket.send(data)
})
2. Install
Install the Serverless Framework globally:
$ npm install -g serverless
3. Create
Just create the following simple boilerplate:
$ touch serverless.yml
$ touch .env # your Tencent api keys
Add the access keys of a Tencent CAM Role with AdministratorAccess
in the .env
file, using this format:
# .env
TENCENT_SECRET_ID=XXX
TENCENT_SECRET_KEY=XXX
- If you don't have a Tencent Cloud account, you could sign up first.
4. Configure
# serverless.yml
MyComponent:
component: '@serverless/tencent-websocket'
inputs:
region: ap-guangzhou
functionName: socket-function
code: ./
functionConf:
timeout: 10
memorySize: 128
environment:
variables:
TEST: vale
vpcConfig:
subnetId: ''
vpcId: ''
apigatewayConf:
protocol: https
environment: release
5. Deploy
$ sls --debug
Notice:
sls
is short forserverless
command.
6. Remove
$ sls remove --debug
More Components
Checkout the Serverless Components repo for more information.