128 lines
4.4 KiB
TypeScript
128 lines
4.4 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2017 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
import { RepoInfo } from '../core/RepoInfo';
|
|
import { Transport } from './Transport';
|
|
export declare function setWebSocketImpl(impl: any): void;
|
|
/**
|
|
* Create a new websocket connection with the given callbacks.
|
|
*/
|
|
export declare class WebSocketConnection implements Transport {
|
|
connId: string;
|
|
private applicationId?;
|
|
private appCheckToken?;
|
|
private authToken?;
|
|
keepaliveTimer: number | null;
|
|
frames: string[] | null;
|
|
totalFrames: number;
|
|
bytesSent: number;
|
|
bytesReceived: number;
|
|
connURL: string;
|
|
onDisconnect: (a?: boolean) => void;
|
|
onMessage: (msg: {}) => void;
|
|
mySock: WebSocket | null;
|
|
private log_;
|
|
private stats_;
|
|
private everConnected_;
|
|
private isClosed_;
|
|
private nodeAdmin;
|
|
/**
|
|
* @param connId identifier for this transport
|
|
* @param repoInfo The info for the websocket endpoint.
|
|
* @param applicationId The Firebase App ID for this project.
|
|
* @param appCheckToken The App Check Token for this client.
|
|
* @param authToken The Auth Token for this client.
|
|
* @param transportSessionId Optional transportSessionId if this is connecting
|
|
* to an existing transport session
|
|
* @param lastSessionId Optional lastSessionId if there was a previous
|
|
* connection
|
|
*/
|
|
constructor(connId: string, repoInfo: RepoInfo, applicationId?: string, appCheckToken?: string, authToken?: string, transportSessionId?: string, lastSessionId?: string);
|
|
/**
|
|
* @param repoInfo - The info for the websocket endpoint.
|
|
* @param transportSessionId - Optional transportSessionId if this is connecting to an existing transport
|
|
* session
|
|
* @param lastSessionId - Optional lastSessionId if there was a previous connection
|
|
* @returns connection url
|
|
*/
|
|
private static connectionURL_;
|
|
/**
|
|
* @param onMessage - Callback when messages arrive
|
|
* @param onDisconnect - Callback with connection lost.
|
|
*/
|
|
open(onMessage: (msg: {}) => void, onDisconnect: (a?: boolean) => void): void;
|
|
/**
|
|
* No-op for websockets, we don't need to do anything once the connection is confirmed as open
|
|
*/
|
|
start(): void;
|
|
static forceDisallow_: boolean;
|
|
static forceDisallow(): void;
|
|
static isAvailable(): boolean;
|
|
/**
|
|
* Number of response before we consider the connection "healthy."
|
|
*/
|
|
static responsesRequiredToBeHealthy: number;
|
|
/**
|
|
* Time to wait for the connection te become healthy before giving up.
|
|
*/
|
|
static healthyTimeout: number;
|
|
/**
|
|
* Returns true if we previously failed to connect with this transport.
|
|
*/
|
|
static previouslyFailed(): boolean;
|
|
markConnectionHealthy(): void;
|
|
private appendFrame_;
|
|
/**
|
|
* @param frameCount - The number of frames we are expecting from the server
|
|
*/
|
|
private handleNewFrameCount_;
|
|
/**
|
|
* Attempts to parse a frame count out of some text. If it can't, assumes a value of 1
|
|
* @returns Any remaining data to be process, or null if there is none
|
|
*/
|
|
private extractFrameCount_;
|
|
/**
|
|
* Process a websocket frame that has arrived from the server.
|
|
* @param mess - The frame data
|
|
*/
|
|
handleIncomingFrame(mess: {
|
|
[k: string]: unknown;
|
|
}): void;
|
|
/**
|
|
* Send a message to the server
|
|
* @param data - The JSON object to transmit
|
|
*/
|
|
send(data: {}): void;
|
|
private shutdown_;
|
|
private onClosed_;
|
|
/**
|
|
* External-facing close handler.
|
|
* Close the websocket and kill the connection.
|
|
*/
|
|
close(): void;
|
|
/**
|
|
* Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after
|
|
* the last activity.
|
|
*/
|
|
resetKeepAlive(): void;
|
|
/**
|
|
* Send a string over the websocket.
|
|
*
|
|
* @param str - String to send.
|
|
*/
|
|
private sendString_;
|
|
}
|