walking-consumer.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import {
  2. OnQueueActive,
  3. OnQueueCleaned,
  4. OnQueueCompleted,
  5. OnQueueDrained,
  6. OnQueueStalled,
  7. Process,
  8. Processor,
  9. } from '@nestjs/bull';
  10. import { Injectable } from '@nestjs/common';
  11. import { Job } from 'bull';
  12. import { MoveService } from 'src/move/move.service';
  13. import { SceneService } from './scene.service';
  14. import { StreamService } from './stream/stream.service';
  15. @Processor('walking')
  16. @Injectable()
  17. export class WalkingConsumer {
  18. constructor(
  19. private streamService: StreamService,
  20. private sceneService: SceneService,
  21. private moveService: MoveService,
  22. ) {}
  23. private isDone = true;
  24. private _checkerRotateDone: NodeJS.Timeout;
  25. @Process()
  26. async processFrame(job: Job<unknown>) {
  27. const jobData = job.data as any as StreamFrameType;
  28. // console.log('jobData', jobData);
  29. const done = await this.streamService.pushFrameToSteam(jobData);
  30. // }
  31. return { done: done };
  32. }
  33. @OnQueueActive()
  34. onActive(job: Job) {
  35. clearTimeout(this._checkerRotateDone);
  36. }
  37. @OnQueueDrained()
  38. onDrained(job: Job) {
  39. console.log(`onDrained`, job);
  40. }
  41. @OnQueueCompleted()
  42. onQueueComplete(job: Job) {
  43. console.log(`walking-frame`, job.data.frame);
  44. this._checkerRotateDone = setTimeout(() => {
  45. console.log('walking--1秒后开流');
  46. const next = job.data.frame + 1;
  47. this.sceneService.resumeStream();
  48. this.sceneService.onRotating.next(false);
  49. this.sceneService.frameCnt.next(next);
  50. const { userId } = this.sceneService.getConfig();
  51. const lastFrame = JSON.parse(job.data.metaData);
  52. const breakPointId = lastFrame.marker.split('T')[1];
  53. const lastReply = lastFrame;
  54. this.moveService.updateUser(userId, breakPointId, lastReply);
  55. }, 1000);
  56. }
  57. // @OnGlobalQueueCompleted()
  58. // onGlobalQueueCompleted() {
  59. // console.log(`onGlobalQueueCompleted`);
  60. // }
  61. @OnQueueStalled()
  62. onStalled() {
  63. console.log(`OnQueueStalled`);
  64. }
  65. @OnQueueCleaned()
  66. onCleaned() {
  67. console.log(`OnQueueCleaned`);
  68. }
  69. }