import Connectors, { Connector, SampledValueTemplate } from '../types/Connectors';
import { MeterValueMeasurand, MeterValuePhase } from '../types/ocpp/MeterValues';
import Requests, { AvailabilityType, BootNotificationRequest, IncomingRequest, IncomingRequestCommand } from '../types/ocpp/Requests';
-import WebSocket, { MessageEvent } from 'ws';
+import WebSocket, { ClientOptions, MessageEvent } from 'ws';
import AutomaticTransactionGenerator from './AutomaticTransactionGenerator';
import { ChargePointStatus } from '../types/ocpp/ChargePointStatus';
import { ChargingProfile } from '../types/ocpp/ChargingProfile';
import ChargingStationInfo from '../types/ChargingStationInfo';
+import { ClientRequestArgs } from 'http';
import Configuration from '../utils/Configuration';
import Constants from '../utils/Constants';
import FileUtils from '../utils/FileUtils';
import { MessageType } from '../types/ocpp/MessageType';
-import OCPP16IncomingRequestService from './ocpp/1.6/OCCP16IncomingRequestService';
+import OCPP16IncomingRequestService from './ocpp/1.6/OCPP16IncomingRequestService';
import OCPP16RequestService from './ocpp/1.6/OCPP16RequestService';
import OCPP16ResponseService from './ocpp/1.6/OCPP16ResponseService';
import OCPPError from './OCPPError';
}
}
- public isWebSocketOpen(): boolean {
+ public isWebSocketConnectionOpened(): boolean {
return this.wsConnection?.readyState === WebSocket.OPEN;
}
this.getConnector(Utils.convertToInt(connector)).status = ChargePointStatus.UNAVAILABLE;
}
}
- if (this.isWebSocketOpen()) {
+ if (this.isWebSocketConnectionOpened()) {
this.wsConnection.close();
}
if (this.getEnableStatistics()) {
if (this.isRegistered()) {
await this.startMessageSequence();
this.hasStopped && (this.hasStopped = false);
- if (this.hasSocketRestarted && this.isWebSocketOpen()) {
+ if (this.hasSocketRestarted && this.isWebSocketConnectionOpened()) {
this.flushMessageQueue();
}
} else {
: 0;
if (webSocketPingInterval > 0 && !this.webSocketPingSetInterval) {
this.webSocketPingSetInterval = setInterval(() => {
- if (this.isWebSocketOpen()) {
+ if (this.isWebSocketConnectionOpened()) {
this.wsConnection.ping((): void => { });
}
}, webSocketPingInterval * 1000);
}
}
- private openWSConnection(options?: WebSocket.ClientOptions, forceCloseOpened = false): void {
- options ?? {} as WebSocket.ClientOptions;
- options?.handshakeTimeout ?? this.getConnectionTimeout() * 1000;
- if (this.isWebSocketOpen() && forceCloseOpened) {
+ private openWSConnection(options?: ClientOptions & ClientRequestArgs, forceCloseOpened = false): void {
+ options = options ?? {};
+ options.handshakeTimeout = options?.handshakeTimeout ?? this.getConnectionTimeout() * 1000;
+ if (!Utils.isNullOrUndefined(this.stationInfo.supervisionUser) && !Utils.isNullOrUndefined(this.stationInfo.supervisionPassword)) {
+ options.auth = `${this.stationInfo.supervisionUser}:${this.stationInfo.supervisionPassword}`;
+ }
+ if (this.isWebSocketConnectionOpened() && forceCloseOpened) {
this.wsConnection.close();
}
let protocol;