You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

64 lines
1.4 KiB

2 years ago
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}`)
})