grpc2.ts 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import * as fs from 'fs'
  2. import { Subject } from 'rxjs';
  3. import { ColorCode, ReportStatus } from '../interfaces/general.interface';
  4. import { GrpcService } from '../services/grpc.service';
  5. import { FisErrorHandlingService } from '../services/error.handling.service.fis';
  6. // Subject for bidirectional communication
  7. const errorHandlingService: FisErrorHandlingService = new FisErrorHandlingService()
  8. const grpcService: GrpcService = new GrpcService()
  9. const messagesJSON: any = fs.readFileSync('payload.json')
  10. let parsedMessages: any[] = JSON.parse(messagesJSON) // load the fake messages generated for this trial
  11. let messageToBeReleased: Subject<any> = new Subject() // Sample message to be transmitted over to target server
  12. let statusControl: Subject<ReportStatus> = new Subject() // Listening for error events and states
  13. let dataMessages = stream() // Emulate messges to be sent over to target server
  14. let server1: string = 'localhost:3000'
  15. let unaryRequestSubject: Subject<any> = new Subject()
  16. /* Server Streaming Test case */
  17. // errorHandlingService.handleMessage(unaryRequestSubject, statusControl).subscribe((messages) => {
  18. // messageToBeReleased.next(messages)
  19. // })
  20. // grpcService.createGrpcInstance(server1, messageToBeReleased, statusControl, { instanceType: 'client', serviceMethod: 'server streaming' })
  21. /* Bidirectional streaming test case */
  22. errorHandlingService.handleMessage(dataMessages, statusControl).subscribe((messages) => {
  23. messageToBeReleased.next(messages)
  24. })
  25. grpcService.createGrpcInstance(server1, messageToBeReleased, statusControl, { instanceType: 'client', serviceMethod: 'bidirectional' })
  26. let testMessageRequest = {
  27. appLogLocId: "68ca0bae-2acd-44f2-b54c-836d6af92890",
  28. appData: {
  29. msgId: "74023eec-2cf9-422c-ab15-e65c6e08b213",
  30. msgLogDateTime: "2023-09-10T17:07:35.262Z",
  31. msgDateTime: "2023-01-16T04:51:29.595Z",
  32. msgTag: [
  33. "free",
  34. "enterprise",
  35. "rich"
  36. ],
  37. msgPayload: "Autus ducimus deinde thema. Succurro tui denuncio nostrum summisse aiunt statua. Cribro commemoro utique.\nUlterius apparatus copia argentum solium textor denego inventore thymbra aegre. Acsi cometes color perspiciatis. Pax caste derelinquo amicitia tui molestiae culpo cohaero.\nRepudiandae desipio tero decretum atrocitas. Trado aptus sunt utor arcus quos molestias. Tabella enim curto clibanus cavus usus villa.\nCondico viriliter reprehenderit unus curriculum. Numquam velut adsuesco adversus veritatis callide delibero umquam vulariter deporto. Inventore astrum cavus ambulo creptio.\nSuspendo demo carus fuga. Decerno dolores deficio accusator. Aestus quod dedico contigo magni."
  38. }
  39. }
  40. setTimeout(() => {
  41. // messageToBeReleased.next(testMessageRequest)
  42. }, 1000)
  43. // setTimeout(() => {
  44. // unaryRequestSubject.next(testMessageRequest)
  45. // }, 7000)
  46. // this is just to publish an array of fake data as a Subject
  47. function stream(): Subject<any> {
  48. let result: Subject<any> = new Subject()
  49. let messages: any[] = parsedMessages
  50. let count = 0
  51. const intervalId = setInterval(() => {
  52. result.next(messages[count]);
  53. count++;
  54. if (count >= 1000) {
  55. clearInterval(intervalId);
  56. result.complete();
  57. }
  58. }, 500)
  59. return result
  60. }