Files
dax-pay-ui/apps/test-server/index.ts
2024-07-02 21:27:05 +08:00

64 lines
1.5 KiB
TypeScript

import Koa from 'koa'
import path from 'path'
import Router from 'koa-router'
import body from 'koa-body'
import cors from 'koa2-cors'
import koaStatic from 'koa-static'
import websockify from 'koa-websocket'
import route from 'koa-route'
import AppRoutes from './routes'
const PORT = 3300
const app = websockify(new Koa())
app.ws.use(function (ctx, next) {
ctx.websocket.send('connection succeeded!')
return next(ctx)
})
app.ws.use(
route.all('/test', function (ctx) {
// ctx.websocket.send('Hello World');
ctx.websocket.on('message', function (message) {
// do something with the message from client
if (message !== 'ping') {
const data = JSON.stringify({
id: Math.ceil(Math.random() * 1000),
time: new Date().getTime(),
res: `${message}`,
})
ctx.websocket.send(data)
}
console.log(message)
})
}),
)
const router = new Router()
// router
AppRoutes.forEach((route) => router[route.method](route.path, route.action))
app.use(cors())
app.use(
body({
encoding: 'gzip',
multipart: true,
formidable: {
// uploadDir: path.join(__dirname, '/upload/'), // 设置文件上传目录
keepExtensions: true,
maxFieldsSize: 20 * 1024 * 1024,
},
}),
)
app.use(router.routes())
app.use(router.allowedMethods())
app.use(koaStatic(path.join(__dirname)))
app.listen(PORT, () => {
console.log(`Application started successfully: http://localhost:${PORT}`)
})