Socket
Communication bidirectionnelle entre l'application Front et Manager.
Importation
import {inject } from "inversify";import "reflect-metadata";import SocketService from "@adclz/fevermainlib/services/socket"; export default class MyClass { private SocketService : SocketService constructor(@inject (SocketService ) SocketService : SocketService ) { this.SocketService = SocketService }}
Sous services
Il y a 2 sous services nommés FrontQueue, BackQueue.
En effet à la différence de l'api rest, l'envoi de reqûetes au socket se fait de façon "brute" et n'attends pas de réponse du serveur.
Pour pouvoir savoir quand une reqûete peut être envoyé, MainLib possède ces 2 sous services qui sont des piles stockant les reqûetes.
Lorsque vous tentez d'envoyer une reqûete via le socket, celle-ci est stockée dans la pile de
BackQueue.
Manager informe MainLib lorsqu'une tâche a été finie, permettant ainsi d'envoyer la reqûete suivante.
BackQueue, Manager possède lui aussi une pile interne qui stocke les reqûetes et se met à jour seul. Ces sous-services permettent surtout d'avoir une "vue" de ce que fais Manager.
FrontQueue stocke les requêtes envoyés par Manager et les lis au fur et à mesure, une fois qu'une reqûete est lue, la pile se met à jour.
RestTasks
📜 Champs
State
SocketService.prototype.State: numberEtat du Socket.
| Valeur | Etat | Description |
|---|---|---|
| 0 | CONNECTING | La connection est en cours |
| 1 | OPEN | La connection est établie |
| 2 | CLOSING | La connection est en cours de fermeture. |
| 3 | CLOSED | La connection est fermée. |
| 4 | UNDEFINED | Socket inexistant. |
FrontQueue
SocketService.prototype.FrontQueue: FrontQueueAccès à la pile de réception des requêtes.
BackQueue
SocketService.prototype.BackQueue: BackQueueAccès à la pile d'envoi des reqûetes.
Mediateur
📢 Notifications
OnNewSocketState
Notifie lorsque le Socket a changé d'état.
import {OnNewSocketState } from "@adclz/fevermainlib/services/socket"; InjectedMediator .Notification (OnNewSocketState ).Subscribe ("MyClassId", DataNotification => { console .log (DataNotification )})
⚙️ Requêtes
TryConnect
Tente une connection au socket.
import {TryConnect } from "@adclz/fevermainlib/services/socket"; InjectedMediator .Request (new TryConnect ({Url : "ws://localhost:7892", Token : "RestToken"}))
RunTia
Demande l'éxecution d'une nouvelle instance de Tia.
import {RunTia } from "@adclz/fevermainlib/services/socket"; InjectedMediator .Request (new RunTia ())
ConnectTia
Demande la connection à une instance de Tia existante.
import {ConnectTia } from "@adclz/fevermainlib/services/socket"; InjectedMediator .Request (new ConnectTia ())
LockPlc
Verouillage d'un automate.
import {LockPlc } from "@adclz/fevermainlib/services/socket"; const PlcUid = ""InjectedMediator .Request (new LockPlc (PlcUid ))
LockHmi
Verouillage d'une hmi.
import {LockHmi } from "@adclz/fevermainlib/services/socket"; const HmiUid = ""InjectedMediator .Request (new LockHmi (HmiUid ))
UnlockPlc
Déverouillage d'un automate.
import {UnlockPlc } from "@adclz/fevermainlib/services/socket"; InjectedMediator .Request (new UnlockPlc ())
UnlockHmi
Déverrouillage d'une hmi.
import {UnlockHmi } from "@adclz/fevermainlib/services/socket"; InjectedMediator .Request (new UnlockHmi ())
OpenBlockInEditor
Ouverture d'un bloc dans l'éditeur de TiaPortal.
import {OpenBlockInEditor } from "@adclz/fevermainlib/services/socket"; const BlockName = ""InjectedMediator .Request (new OpenBlockInEditor (BlockName ))
Refresh
Rafraîchis toutes les machines à état.
import {Refresh } from "@adclz/fevermainlib/services/socket"; InjectedMediator .Request (new Refresh ())