Alert internal users if first message on websocket is repeated
This commit is contained in:
parent
d0b8a2991f
commit
cd2bb537fa
8 changed files with 144 additions and 0 deletions
|
@ -34,6 +34,7 @@ import type {
|
|||
import WebSocketResource, {
|
||||
connectAuthenticatedLibsignal,
|
||||
connectUnauthenticatedLibsignal,
|
||||
ServerRequestType,
|
||||
TransportOption,
|
||||
WebSocketResourceWithShadowing,
|
||||
} from './WebsocketResources';
|
||||
|
@ -106,6 +107,8 @@ export class SocketManager extends EventListener {
|
|||
|
||||
private reconnectController: AbortController | undefined;
|
||||
|
||||
private envelopeCount = 0;
|
||||
|
||||
constructor(
|
||||
private readonly libsignalNet: Net.Net,
|
||||
private readonly options: SocketManagerOptions
|
||||
|
@ -298,6 +301,7 @@ export class SocketManager extends EventListener {
|
|||
);
|
||||
|
||||
window.logAuthenticatedConnect?.();
|
||||
this.envelopeCount = 0;
|
||||
this.backOff.reset();
|
||||
|
||||
authenticated.addEventListener('close', ({ code, reason }): void => {
|
||||
|
@ -860,6 +864,12 @@ export class SocketManager extends EventListener {
|
|||
}
|
||||
|
||||
private queueOrHandleRequest(req: IncomingWebSocketRequest): void {
|
||||
if (req.requestType === ServerRequestType.ApiMessage) {
|
||||
this.envelopeCount += 1;
|
||||
if (this.envelopeCount === 1) {
|
||||
this.emit('firstEnvelope', req);
|
||||
}
|
||||
}
|
||||
if (this.requestHandlers.size === 0) {
|
||||
this.incomingRequestQueue.push(req);
|
||||
log.info(
|
||||
|
@ -924,6 +934,10 @@ export class SocketManager extends EventListener {
|
|||
public override on(type: 'statusChange', callback: () => void): this;
|
||||
public override on(type: 'online', callback: () => void): this;
|
||||
public override on(type: 'offline', callback: () => void): this;
|
||||
public override on(
|
||||
type: 'firstEnvelope',
|
||||
callback: (incoming: IncomingWebSocketRequest) => void
|
||||
): this;
|
||||
|
||||
public override on(
|
||||
type: string | symbol,
|
||||
|
@ -937,6 +951,10 @@ export class SocketManager extends EventListener {
|
|||
public override emit(type: 'statusChange'): boolean;
|
||||
public override emit(type: 'online'): boolean;
|
||||
public override emit(type: 'offline'): boolean;
|
||||
public override emit(
|
||||
type: 'firstEnvelope',
|
||||
incoming: IncomingWebSocketRequest
|
||||
): boolean;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
public override emit(type: string | symbol, ...args: Array<any>): boolean {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue