gemercheung 2 tahun lalu
induk
melakukan
c13634442b
4 mengubah file dengan 64 tambahan dan 8 penghapusan
  1. 1 0
      package.json
  2. 50 2
      pnpm-lock.yaml
  3. 5 6
      src/chat/chat.gateway.ts
  4. 8 0
      src/main.ts

+ 1 - 0
package.json

@@ -26,6 +26,7 @@
     "@nestjs/core": "^9.0.0",
     "@nestjs/platform-express": "^9.0.0",
     "@nestjs/platform-socket.io": "^9.3.8",
+    "@nestjs/swagger": "^6.2.1",
     "@nestjs/throttler": "^4.0.0",
     "@nestjs/websockets": "^9.3.8",
     "@socket.io/admin-ui": "^0.5.1",

+ 50 - 2
pnpm-lock.yaml

@@ -9,6 +9,7 @@ specifiers:
   '@nestjs/platform-express': ^9.0.0
   '@nestjs/platform-socket.io': ^9.3.8
   '@nestjs/schematics': ^9.0.0
+  '@nestjs/swagger': ^6.2.1
   '@nestjs/testing': ^9.0.0
   '@nestjs/throttler': ^4.0.0
   '@nestjs/websockets': ^9.3.8
@@ -53,6 +54,7 @@ dependencies:
   '@nestjs/core': 9.3.8_wykoxrhwvqdyw5545gk6arrv3e
   '@nestjs/platform-express': 9.3.8_znlpu2ktzydjx7rl4llynpumdm
   '@nestjs/platform-socket.io': 9.3.8_dfv7e63c6bbp5mh32mor24dsji
+  '@nestjs/swagger': 6.2.1_566t3mhi5ibwmzfcn7izxal7e4
   '@nestjs/throttler': 4.0.0_566t3mhi5ibwmzfcn7izxal7e4
   '@nestjs/websockets': 9.3.8_63hcnad7c2cx45h3ehx7j2mdfe
   '@socket.io/admin-ui': 0.5.1_socket.io@4.6.0
@@ -1023,6 +1025,23 @@ packages:
     transitivePeerDependencies:
       - encoding
 
+  /@nestjs/mapped-types/1.2.2_5yk7dcu7esh7qhqfweoxaqe3vq:
+    resolution: {integrity: sha512-3dHxLXs3M0GPiriAcCFFJQHoDFUuzTD5w6JDhE7TyfT89YKpe6tcCCIqOZWdXmt9AZjjK30RkHRSFF+QEnWFQg==}
+    peerDependencies:
+      '@nestjs/common': ^7.0.8 || ^8.0.0 || ^9.0.0
+      class-transformer: ^0.2.0 || ^0.3.0 || ^0.4.0 || ^0.5.0
+      class-validator: ^0.11.1 || ^0.12.0 || ^0.13.0 || ^0.14.0
+      reflect-metadata: ^0.1.12
+    peerDependenciesMeta:
+      class-transformer:
+        optional: true
+      class-validator:
+        optional: true
+    dependencies:
+      '@nestjs/common': 9.3.8_mnr6j2del53muneqly5h4y27ai
+      reflect-metadata: 0.1.13
+    dev: false
+
   /@nestjs/platform-express/9.3.8_znlpu2ktzydjx7rl4llynpumdm:
     resolution: {integrity: sha512-VY0tZbMPXyLypIm1FwpFC+xv0DR0RWx+M4baD9JiLmh+jdojm/blfzoFqVMRoZ33F9Q3iUjrQfSJOfgbbTiv5g==}
     peerDependencies:
@@ -1086,6 +1105,33 @@ packages:
       - chokidar
     dev: true
 
+  /@nestjs/swagger/6.2.1_566t3mhi5ibwmzfcn7izxal7e4:
+    resolution: {integrity: sha512-9M2vkfJHIzLqDZwvM5TEZO0MxRCvIb0xVy0LsmWwxH1lrb0z/4MhU+r2CWDhBtTccVJrKxVPiU2s3T3b9uUJbg==}
+    peerDependencies:
+      '@fastify/static': ^6.0.0
+      '@nestjs/common': ^9.0.0
+      '@nestjs/core': ^9.0.0
+      class-transformer: '*'
+      class-validator: '*'
+      reflect-metadata: ^0.1.12
+    peerDependenciesMeta:
+      '@fastify/static':
+        optional: true
+      class-transformer:
+        optional: true
+      class-validator:
+        optional: true
+    dependencies:
+      '@nestjs/common': 9.3.8_mnr6j2del53muneqly5h4y27ai
+      '@nestjs/core': 9.3.8_wykoxrhwvqdyw5545gk6arrv3e
+      '@nestjs/mapped-types': 1.2.2_5yk7dcu7esh7qhqfweoxaqe3vq
+      js-yaml: 4.1.0
+      lodash: 4.17.21
+      path-to-regexp: 3.2.0
+      reflect-metadata: 0.1.13
+      swagger-ui-dist: 4.15.5
+    dev: false
+
   /@nestjs/testing/9.3.8_aknvb6i6yy6c5uvn7ka6dpvunu:
     resolution: {integrity: sha512-QyGOfrEOWbT8mi7ruYnh/taKuHDv4caAyf4WZ1YKkGn4tCeTKKNXSvV/y+NoO5o9Li/sLiq9B8EmleB1fxGajw==}
     peerDependencies:
@@ -1890,7 +1936,6 @@ packages:
 
   /argparse/2.0.1:
     resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-    dev: true
 
   /array-flatten/1.1.1:
     resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
@@ -3935,7 +3980,6 @@ packages:
     hasBin: true
     dependencies:
       argparse: 2.0.1
-    dev: true
 
   /jsesc/2.5.2:
     resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
@@ -5114,6 +5158,10 @@ packages:
     engines: {node: '>= 0.4'}
     dev: true
 
+  /swagger-ui-dist/4.15.5:
+    resolution: {integrity: sha512-V3eIa28lwB6gg7/wfNvAbjwJYmDXy1Jo1POjyTzlB6wPcHiGlRxq39TSjYGVjQrUSAzpv+a7nzp7mDxgNy57xA==}
+    dev: false
+
   /symbol-observable/4.0.0:
     resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==}
     engines: {node: '>=0.10'}

+ 5 - 6
src/chat/chat.gateway.ts

@@ -18,13 +18,12 @@ import * as bcrypt from 'bcrypt';
   transports: ['websocket'],
   cors: '*',
   // namespace: "ws",
-  path: '/ws-sync',
+  path: process.env.SOCKET_PATH,
   // parser: require('socket.io-msgpack-parser'),
 })
 export class ChatGateway
-  implements OnGatewayInit, OnGatewayDisconnect, OnGatewayConnection
-{
-  constructor(@InjectRedis() private readonly redis: Redis) {}
+  implements OnGatewayInit, OnGatewayDisconnect, OnGatewayConnection {
+  constructor(@InjectRedis() private readonly redis: Redis) { }
   @WebSocketServer() server: Server;
   handleConnection(client: any, ...args: any[]) {
     // console.log('handleConnection', client, args);
@@ -36,8 +35,8 @@ export class ChatGateway
     instrument(server, {
       auth: {
         type: 'basic',
-        username: '4dage',
-        password: bcrypt.hashSync('4dage168.', 10),
+        username: process.env.WATCH_USER,
+        password: bcrypt.hashSync(process.env.WATCH_PASSWORD, 10),
       },
       namespaceName: '/watch',
     });

+ 8 - 0
src/main.ts

@@ -6,6 +6,7 @@ import { WinstonModule } from 'nest-winston';
 import * as winston from 'winston';
 import 'winston-daily-rotate-file';
 import { join } from 'path';
+import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
 
 async function bootstrap() {
   // const app = await NestFactory.create(AppModule);
@@ -39,6 +40,13 @@ async function bootstrap() {
   await redisIoAdapter.connectToRedis();
   app.useWebSocketAdapter(redisIoAdapter);
 
+  const config = new DocumentBuilder()
+    .setTitle('带看api文档')
+    .setDescription('The cats API description')
+    .setVersion('1.0')
+    .build();
+  const document = SwaggerModule.createDocument(app, config);
+  SwaggerModule.setup('api', app, document);
   await app.listen(8888);
 }
 bootstrap();