mirror of
https://github.com/rilaxik/fivem-rpc.git
synced 2026-09-29 01:30:42 +00:00
fix(rpc): separate public calls + better pending handlers
This commit is contained in:
@@ -51,6 +51,7 @@ export class RPCInstanceBase {
|
||||
to: RPCEnvironment,
|
||||
args: unknown[],
|
||||
player: number | null,
|
||||
type: 'event' | 'broadcast' = 'event',
|
||||
): RPCState {
|
||||
return {
|
||||
event,
|
||||
@@ -60,7 +61,7 @@ export class RPCInstanceBase {
|
||||
error: null,
|
||||
data: args,
|
||||
player,
|
||||
type: 'event',
|
||||
type,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,11 +54,18 @@ export class RPCInstanceClient extends RPCInstanceBase {
|
||||
const payload = this.accept(payloadRaw)
|
||||
if (!payload) return
|
||||
|
||||
if (payload.type === 'event') {
|
||||
if (payload.type === 'event' || payload.type === 'broadcast') {
|
||||
if (payload.calledTo === 'client') {
|
||||
const response = await this.dispatch(this._emitterServer, payload)
|
||||
|
||||
emitNet(RPCEvents.LISTENER_CLIENT, stringify(response))
|
||||
if (payload.type === 'event') {
|
||||
emitNet(RPCEvents.LISTENER_CLIENT, stringify(response))
|
||||
} else if (response.error) {
|
||||
// nobody waits for a broadcast, so its failures only show up here
|
||||
this.log(
|
||||
`broadcast ${payload.event} failed: ${response.error.message}`,
|
||||
)
|
||||
}
|
||||
}
|
||||
if (payload.calledTo === 'webview') {
|
||||
this._sendWebMessage({
|
||||
|
||||
@@ -61,7 +61,7 @@ export class RPCInstanceServer extends RPCInstanceBase {
|
||||
if (payload.type === 'event') {
|
||||
const response = await this.dispatch(emitter, payload, player)
|
||||
emitNet(RPCEvents.LISTENER_SERVER, player, stringify(response))
|
||||
} else {
|
||||
} else if (payload.type === 'response') {
|
||||
this.settle(payload, player)
|
||||
}
|
||||
}
|
||||
@@ -108,7 +108,7 @@ export class RPCInstanceServer extends RPCInstanceBase {
|
||||
EventName extends keyof s.RPCEvents_ServerClient,
|
||||
Arguments extends Parameters<s.RPCEvents_ServerClient[EventName]>,
|
||||
>(eventName: EventName, ...args: Arguments): Promise<void> {
|
||||
const payload = this.request(eventName, 'client', args, -1)
|
||||
const payload = this.request(eventName, 'client', args, -1, 'broadcast')
|
||||
|
||||
emitNet(RPCEvents.LISTENER_SERVER, -1, stringify(payload))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user