64 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			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}`);
 | |
| });
 |