chore(csms): try WebSocket support
This commit is contained in:
@@ -1,15 +1,65 @@
|
||||
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.text('Hello Hono!')
|
||||
return c.json({
|
||||
platform: 'Helios CSMS',
|
||||
version: pkg.version,
|
||||
message: 'ok',
|
||||
})
|
||||
})
|
||||
|
||||
serve({
|
||||
fetch: app.fetch,
|
||||
port: 3001
|
||||
}, (info) => {
|
||||
console.log(`Server is running on http://localhost:${info.port}`)
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user