@proton/ccxt
Version:
A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
60 lines (57 loc) • 2.2 kB
JavaScript
// ----------------------------------------------------------------------------
// PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
// https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
// EDIT THE CORRESPONDENT .ts FILE INSTEAD
import Client from './Client.js';
import { sleep, isNode, milliseconds, } from '../../base/functions.js';
import WebSocket from 'ws';
const WebSocketPlatform = isNode ? WebSocket : self.WebSocket;
export default class WsClient extends Client {
createConnection() {
if (this.verbose) {
this.log(new Date(), 'connecting to', this.url);
}
this.connectionStarted = milliseconds();
this.setConnectionTimeout();
if (isNode) {
this.connection = new WebSocketPlatform(this.url, this.protocols, this.options);
}
else {
this.connection = new WebSocketPlatform(this.url, this.protocols);
}
this.connection.onopen = this.onOpen.bind(this);
this.connection.onmessage = this.onMessage.bind(this);
this.connection.onerror = this.onError.bind(this);
this.connection.onclose = this.onClose.bind(this);
if (isNode) {
this.connection
.on('ping', this.onPing.bind(this))
.on('pong', this.onPong.bind(this))
.on('upgrade', this.onUpgrade.bind(this));
}
// this.connection.terminate () // debugging
// this.connection.close () // debugging
}
connect(backoffDelay = 0) {
if (!this.startedConnecting) {
this.startedConnecting = true;
// exponential backoff for consequent ws connections if necessary
if (backoffDelay) {
sleep(backoffDelay).then(this.createConnection.bind(this));
}
else {
this.createConnection();
}
}
return this.connected;
}
isOpen() {
return (this.connection.readyState === WebSocketPlatform.OPEN);
}
close() {
if (this.connection instanceof WebSocketPlatform) {
return this.connection.close();
}
}
}
;