update protocol for devices system

This commit is contained in:
RoyceDa
2026-01-31 03:01:25 +02:00
parent 45e9f84cbe
commit 9194bf5c5f
3 changed files with 145 additions and 2 deletions

View File

@@ -0,0 +1,75 @@
import Packet from "../packet";
import Stream from "../stream";
export enum DeviceState {
ONLINE = 0,
OFFLINE = 1
}
export enum DeviceVerifyState {
VERIFIED = 0,
/**
* Устройство не подтверждено пользователем
* через другой девайс
*/
NOT_VERIFIED = 1
}
export interface DeviceEntry {
deviceId: string;
deviceName: string;
deviceOs: string;
deviceStatus: DeviceState;
deviceVerify: DeviceVerifyState;
}
/**
* Отправляется с сервера клиенту для передачи списка
* подключенных в данный момент к аккаунту устройств
*/
export class PacketDeviceList extends Packet {
private devices: DeviceEntry[] = [];
public getPacketId(): number {
return 0x17;
}
public _receive(stream: Stream): void {
const deviceCount = stream.readInt16();
this.devices = [];
for (let i = 0; i < deviceCount; i++) {
const device: DeviceEntry = {
deviceId: stream.readString(),
deviceName: stream.readString(),
deviceOs: stream.readString(),
deviceStatus: stream.readInt8(),
deviceVerify: stream.readInt8()
};
this.devices.push(device);
}
}
public _send(): Promise<Stream> | Stream {
const stream = new Stream();
stream.writeInt16(this.getPacketId());
stream.writeInt16(this.devices.length);
for (const device of this.devices) {
stream.writeString(device.deviceId);
stream.writeString(device.deviceName);
stream.writeString(device.deviceOs);
stream.writeInt8(device.deviceStatus);
stream.writeInt8(device.deviceVerify);
}
return stream;
}
public getDevices(): DeviceEntry[] {
return this.devices;
}
public setDevices(devices: DeviceEntry[]): void {
this.devices = devices;
}
}

View File

@@ -0,0 +1,64 @@
import Packet from "../packet";
import Stream from "../stream";
export interface Device {
deviceId: string;
deviceName: string;
deviceOs: string;
}
/**
* Приходит всегда с сервера,
* когда к аккаунту пользователя подключается новое устройство.
* Приходит на все девайсы.
*/
export class PacketDeviceNew extends Packet {
private ipAddress: string = "";
private device: Device = {
deviceId: "",
deviceName: "",
deviceOs: ""
}
public getPacketId(): number {
return 0x09;
}
public _receive(stream: Stream): void {
this.ipAddress = stream.readString();
this.device = {
deviceId: stream.readString(),
deviceName: stream.readString(),
deviceOs: stream.readString()
};
}
public _send(): Promise<Stream> | Stream {
const stream = new Stream();
stream.writeInt16(this.getPacketId());
stream.writeString(this.ipAddress);
stream.writeString(this.device.deviceId);
stream.writeString(this.device.deviceName);
stream.writeString(this.device.deviceOs);
return stream;
}
public getIpAddress(): string {
return this.ipAddress;
}
public setIpAddress(ipAddress: string): void {
this.ipAddress = ipAddress;
}
public getDevice(): Device {
return this.device;
}
public setDevice(device: Device): void {
this.device = device;
}
}

View File

@@ -9,6 +9,7 @@ export enum HandshakeState {
export interface Device { export interface Device {
deviceId: string; deviceId: string;
deviceName: string; deviceName: string;
deviceOs: string;
} }
/** /**
@@ -28,7 +29,8 @@ export default class PacketHandshake extends Packet {
private heartbeatInterval : number = 15; private heartbeatInterval : number = 15;
private device: Device = { private device: Device = {
deviceId: "", deviceId: "",
deviceName: "" deviceName: "",
deviceOs: ""
}; };
private handshakeState: private handshakeState:
HandshakeState = HandshakeState.NEED_DEVICE_VERIFICATION; HandshakeState = HandshakeState.NEED_DEVICE_VERIFICATION;
@@ -44,7 +46,8 @@ export default class PacketHandshake extends Packet {
this.heartbeatInterval = stream.readInt8(); this.heartbeatInterval = stream.readInt8();
this.device = { this.device = {
deviceId: stream.readString(), deviceId: stream.readString(),
deviceName: stream.readString() deviceName: stream.readString(),
deviceOs: stream.readString()
} }
this.handshakeState = stream.readInt8(); this.handshakeState = stream.readInt8();
} }
@@ -58,6 +61,7 @@ export default class PacketHandshake extends Packet {
stream.writeInt8(this.heartbeatInterval); stream.writeInt8(this.heartbeatInterval);
stream.writeString(this.device.deviceId); stream.writeString(this.device.deviceId);
stream.writeString(this.device.deviceName); stream.writeString(this.device.deviceName);
stream.writeString(this.device.deviceOs);
stream.writeInt8(this.handshakeState); stream.writeInt8(this.handshakeState);
return stream; return stream;
} }