Files
helios-evcs/apps/csms/src/index.ts

66 lines
1.4 KiB
TypeScript

import pkg from '../../../package.json' with { type: 'json' }
import { serve } from '@hono/node-server'
import { Hono } from 'hono'
import { createNodeWebSocket } from '@hono/node-ws'
import { getConnInfo } from '@hono/node-server/conninfo'
import { cors } from 'hono/cors'
import { logger } from 'hono/logger'
import { showRoutes } from 'hono/dev'
const app = new Hono()
const { injectWebSocket, upgradeWebSocket } = createNodeWebSocket({ app })
app.use(logger())
app.use('/ocpp', cors({
origin: '*',
allowMethods: ['GET', 'POST', 'OPTIONS'],
allowHeaders: ['Content-Type', 'Authorization'],
exposeHeaders: ['Content-Length'],
credentials: true,
}))
app.get('/', (c) => {
return c.json({
platform: 'Helios CSMS',
version: pkg.version,
message: 'ok',
})
})
app.get(
'/ocpp',
upgradeWebSocket((c) => {
return {
onOpen(evt, ws) {
const connInfo = getConnInfo(c)
console.log(`New connection from ${connInfo.remote.address}:${connInfo.remote.port}`)
},
onMessage(evt, ws) {
console.log(`Received message: ${evt.data}`)
ws.send(`Echo: ${evt.data}`)
},
onClose(evt, ws) {
console.log('Connection closed: ', evt.code, evt.reason)
},
}
}),
)
showRoutes(app, {
verbose: true,
})
const server = serve(
{
fetch: app.fetch,
port: 3001,
},
(info) => {
console.log(`Server is running on http://localhost:${info.port}`)
},
)
injectWebSocket(server)