serverless-offline
Version:
Emulate AWS λ and API Gateway locally when developing your Serverless project
71 lines (55 loc) • 1.49 kB
JavaScript
import ConnectionsController from "./ConnectionsController.js"
import { log } from "../../../../utils/log.js"
export default function connectionsRoutes(webSocketClients) {
const connectionsController = new ConnectionsController(webSocketClients)
return [
{
async handler(request, h) {
const {
params: { connectionId },
payload,
url,
} = request
log.debug(`got POST to ${url}`)
const clientExisted = await connectionsController.send(
connectionId,
payload,
)
if (!clientExisted) {
return h.response(null).code(410)
}
log.debug(`sent data to connection:${connectionId}`)
return null
},
method: "POST",
options: {
payload: {
parse: false,
},
},
path: "/@connections/{connectionId}",
},
{
handler(request, h) {
const {
params: { connectionId },
url,
} = request
log.debug(`got DELETE to ${url}`)
const clientExisted = connectionsController.remove(connectionId)
if (!clientExisted) {
return h.response(null).code(410)
}
log.debug(`closed connection:${connectionId}`)
return h.response(null).code(204)
},
method: "DELETE",
options: {
payload: {
parse: false,
},
},
path: "/@connections/{connectionId}",
},
]
}