Custom Streamers
Create a custom streamer for streaming data.
How does it Work?
Custom Streamer Server Side
import * as alt from 'alt-server';
import { sha256Random } from '../utility/encryption';
import { StreamerService } from './streamer';
const globalDoors: Array<IDoorState> = [];
const STREAM_RANGE = 25;
const KEY = 'doors';
interface IDoorState {
uid?: string;
/**
* Position of the Object in a 3D space.
* @type {Vector3}
* @memberof IDoorState
*/
pos: Vector3;
/**
* Some custom data for door state...
* Add whatever you want...
*/
isOpen?: boolean;
}
export class DoorController {
/**
* Initializes the streamer to use this callback to update players.
*/
static init() {
StreamerService.registerCallback(KEY, DoorController.update, STREAM_RANGE);
}
/**
* Called when stream data is updated for this type.
*/
static update(player: alt.Player, doors: Array<IDoorState>) {
// You should listen to this event on client-side and do something with it.
alt.emitClient(player, 'populate:Doors', doors);
}
/**
* Call this when you add / remove global stream data.
*/
static refresh() {
StreamerService.updateData(KEY, globalDoors);
}
/**
* Call this when you want to add new stream data.
*/
static append(doorData: IDoorState): string {
if (!doorData.uid) {
doorData.uid = sha256Random(JSON.stringify(doorData));
}
globalDoors.push(doorData);
DoorController.refresh();
return doorData.uid;
}
}
DoorController.init();Custom Streamer Client Side
Last updated