src/tracking/tracking.gateway.ts
OnGatewayConnection
OnGatewayDisconnect
Properties |
Methods |
| server |
Type : Server
|
Decorators :
@WebSocketServer()
|
|
Defined in src/tracking/tracking.gateway.ts:21
|
| broadcastAlert | ||||||
broadcastAlert(alert: any)
|
||||||
|
Defined in src/tracking/tracking.gateway.ts:68
|
||||||
|
Broadcast an alert to all fleet subscribers
Parameters :
Returns :
void
|
| broadcastPosition |
broadcastPosition(vehicleId: string, position: any)
|
|
Defined in src/tracking/tracking.gateway.ts:56
|
|
Called by the tracking service when a position update arrives
Returns :
void
|
| handleConnection | ||||||
handleConnection(client: Socket)
|
||||||
|
Defined in src/tracking/tracking.gateway.ts:23
|
||||||
|
Parameters :
Returns :
void
|
| handleDisconnect | ||||||
handleDisconnect(client: Socket)
|
||||||
|
Defined in src/tracking/tracking.gateway.ts:27
|
||||||
|
Parameters :
Returns :
void
|
| handleSubscribeFleet | ||||||
handleSubscribeFleet(client: Socket)
|
||||||
Decorators :
@SubscribeMessage('subscribe:fleet')
|
||||||
|
Defined in src/tracking/tracking.gateway.ts:32
|
||||||
|
Parameters :
Returns :
{ event: string; data: string; }
|
| handleSubscribeVehicle | |||||||||
handleSubscribeVehicle(client: Socket, vehicleId: string)
|
|||||||||
Decorators :
@SubscribeMessage('subscribe:vehicle')
|
|||||||||
|
Defined in src/tracking/tracking.gateway.ts:39
|
|||||||||
|
Parameters :
Returns :
{ event: string; data: string; }
|
| handleUnsubscribeVehicle | |||||||||
handleUnsubscribeVehicle(client: Socket, vehicleId: string)
|
|||||||||
Decorators :
@SubscribeMessage('unsubscribe:vehicle')
|
|||||||||
|
Defined in src/tracking/tracking.gateway.ts:48
|
|||||||||
|
Parameters :
Returns :
{ event: string; data: string; }
|
import {
WebSocketGateway,
WebSocketServer,
SubscribeMessage,
OnGatewayConnection,
OnGatewayDisconnect,
} from '@nestjs/websockets';
import { Logger } from '@nestjs/common';
import { Server, Socket } from 'socket.io';
@WebSocketGateway({
cors: { origin: '*' },
namespace: '/tracking',
})
export class TrackingGateway
implements OnGatewayConnection, OnGatewayDisconnect
{
private readonly logger = new Logger(TrackingGateway.name);
@WebSocketServer()
server: Server;
handleConnection(client: Socket) {
this.logger.log(`Client connected: ${client.id}`);
}
handleDisconnect(client: Socket) {
this.logger.log(`Client disconnected: ${client.id}`);
}
@SubscribeMessage('subscribe:fleet')
handleSubscribeFleet(client: Socket) {
client.join('fleet');
this.logger.debug(`Client ${client.id} subscribed to fleet`);
return { event: 'subscribed', data: 'fleet' };
}
@SubscribeMessage('subscribe:vehicle')
handleSubscribeVehicle(client: Socket, vehicleId: string) {
client.join(`vehicle:${vehicleId}`);
this.logger.debug(
`Client ${client.id} subscribed to vehicle:${vehicleId}`,
);
return { event: 'subscribed', data: vehicleId };
}
@SubscribeMessage('unsubscribe:vehicle')
handleUnsubscribeVehicle(client: Socket, vehicleId: string) {
client.leave(`vehicle:${vehicleId}`);
return { event: 'unsubscribed', data: vehicleId };
}
/**
* Called by the tracking service when a position update arrives
*/
broadcastPosition(vehicleId: string, position: any) {
this.server
.to('fleet')
.emit('vehicle:position', { vehicleId, ...position });
this.server
.to(`vehicle:${vehicleId}`)
.emit('vehicle:position', { vehicleId, ...position });
}
/**
* Broadcast an alert to all fleet subscribers
*/
broadcastAlert(alert: any) {
this.server.to('fleet').emit('alert:new', alert);
}
}