forked from wangjiadong/comp
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.
63 lines
1.5 KiB
63 lines
1.5 KiB
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}`); |
|
});
|
|
|