From e0e258ab62e2c3e3a81f386795e8a1ac318d90e7 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Wed, 18 Aug 2021 18:58:28 +0100 Subject: [PATCH] improve --- .../services/socket/synchro.service.spec.ts | 16 ++++ src/app/services/socket/synchro.service.ts | 74 +++++++++++++++++++ .../opts-expediente-pr.page.ts | 1 + 3 files changed, 91 insertions(+) create mode 100644 src/app/services/socket/synchro.service.spec.ts create mode 100644 src/app/services/socket/synchro.service.ts diff --git a/src/app/services/socket/synchro.service.spec.ts b/src/app/services/socket/synchro.service.spec.ts new file mode 100644 index 000000000..61f099398 --- /dev/null +++ b/src/app/services/socket/synchro.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { SynchroService } from './synchro.service'; + +describe('SynchroService', () => { + let service: SynchroService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(SynchroService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/socket/synchro.service.ts b/src/app/services/socket/synchro.service.ts new file mode 100644 index 000000000..7caea0a1a --- /dev/null +++ b/src/app/services/socket/synchro.service.ts @@ -0,0 +1,74 @@ +import { Injectable } from '@angular/core'; +import { v4 as uuidv4 } from 'uuid' + +export interface wss{ + + url: string, + type: 'reflect' | 'emit' + header: { + id: string + bluePrint: string, + jwt: string + } + +} + +@Injectable({ + providedIn: 'root' +}) +export class SynchroService { + [x: string]: any; + + private connection!: WebSocket; + private id: string = uuidv4(); + public conected = false + private url: string = '' + + constructor(){} + + setUrl(wss:wss) { + this.url = `${wss.url}${wss.header.id}/${wss.header.jwt}/${wss.header.bluePrint}/${this.id}/` + } + + connect() { + + this.connection = new WebSocket(this.url); + // bind function + this.connection.onopen = this.onopen; + this.connection.onmessage = this.onmessage; + this.connection.onclose = this.onclose; + this.connection.onerror = this.onerror; + } + + private onopen = () =>{ + console.log('open ======================= welcome to socket server') + // this.connection.send(JSON.stringify({user:'user1'})); + } + + public $send = (object: any) => { + let sendData = JSON.stringify(Object.assign({}, object)); + this.connection.send(sendData); + } + + private onmessage = async (event: any)=> { + + } + + private onclose=(event:any)=>{ + setTimeout(() => { + if (event.wasClean) { + console.log(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`); + } else { + // e.g. server process killed or network down + // event.code is usually 1006 in this case + console.log('[close] Connection died'); + console.log('Reconnect') + this.connect() + } + }, 100); + } + + private onerror=(event: any)=>{ + console.log(`[error] ${event.message}`); + } +} diff --git a/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.ts b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.ts index ea9cbc679..9feb79e4b 100644 --- a/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.ts +++ b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.ts @@ -270,6 +270,7 @@ export class OptsExpedientePrPage implements OnInit { taskAction: taskAction, task: task, profile: this.profile, + fulltask: this.fulltask, }, cssClass: classs, });