UNPKG

vscode-chrome-debug-core

Version:

A library for building VS Code debug adapters for targets that support the Chrome Remote Debug Protocol

55 lines (53 loc) 2.41 kB
"use strict"; /*--------------------------------------------------------- * Copyright (C) Microsoft Corporation. All rights reserved. *--------------------------------------------------------*/ Object.defineProperty(exports, "__esModule", { value: true }); const vscode_debugadapter_1 = require("vscode-debugadapter"); const WebSocket = require("ws"); class WebSocketToLikeSocketProxy { constructor(_port, _socket) { this._port = _port; this._socket = _socket; this._currentlyOpenedWebSocket = null; } start() { this._server = new WebSocket.Server({ port: this._port }, () => { vscode_debugadapter_1.logger.log(`CRDP Proxy listening on: ${this._port}`); }); this._socket.on('close', () => { vscode_debugadapter_1.logger.log('CRDP Proxy shutting down'); this._server.close(() => { if (this._currentlyOpenedWebSocket !== null) { this._currentlyOpenedWebSocket.close(); vscode_debugadapter_1.logger.log('CRDP Proxy succesfully shut down'); } return {}; }); }); this._server.on('connection', openedWebSocket => { if (this._currentlyOpenedWebSocket !== null) { openedWebSocket.close(); throw Error(`CRDP Proxy: Only one websocket is supported by the server on port ${this._port}`); } else { this._currentlyOpenedWebSocket = openedWebSocket; vscode_debugadapter_1.logger.log(`CRDP Proxy accepted a new connection`); } openedWebSocket.on('message', data => { vscode_debugadapter_1.logger.log(`CRDP Proxy - Client to Target: ${data}`); this._socket.send(data.toString()); }); openedWebSocket.on('close', () => { vscode_debugadapter_1.logger.log('CRDP Proxy - Client closed the connection'); this._currentlyOpenedWebSocket = null; }); this._socket.on('message', data => { vscode_debugadapter_1.logger.log(`CRDP Proxy - Target to Client: ${data}`); openedWebSocket.send(data); }); }); } } exports.WebSocketToLikeSocketProxy = WebSocketToLikeSocketProxy; //# sourceMappingURL=webSocketToLikeSocketProxy.js.map