UNPKG

1.97 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var WS = require("ws");
4var http = require("http");
5var buildWebsocketClient = require('@remixproject/plugin-ws').buildWebsocketClient;
6var WebSocket = /** @class */ (function () {
7 function WebSocket(port, opt, sharedFolder) {
8 this.port = port;
9 this.opt = opt;
10 this.sharedFolder = sharedFolder;
11 }
12 WebSocket.prototype.start = function (callback) {
13 var _this = this;
14 this.server = http.createServer(function (request, response) {
15 console.log((new Date()) + ' Received request for ' + request.url);
16 response.writeHead(404);
17 response.end();
18 });
19 var loopback = '127.0.0.1';
20 this.server.listen(this.port, loopback, function () {
21 console.log((new Date()) + ' Remixd is listening on ' + loopback + ':65520');
22 });
23 this.wsServer = new WS.Server({
24 server: this.server,
25 verifyClient: function (info, done) {
26 if (!originIsAllowed(info.origin, _this)) {
27 done(false);
28 console.log((new Date()) + ' Connection from origin ' + info.origin + ' rejected.');
29 return;
30 }
31 done(true);
32 }
33 });
34 this.wsServer.on('connection', function (ws) {
35 var sharedFolder = _this.sharedFolder;
36 _this.connection = ws;
37 buildWebsocketClient(ws, sharedFolder);
38 if (callback)
39 callback(ws);
40 });
41 };
42 WebSocket.prototype.close = function () {
43 var _this = this;
44 if (this.wsServer) {
45 this.wsServer.close(function () {
46 _this.server.close();
47 });
48 }
49 };
50 return WebSocket;
51}());
52exports.default = WebSocket;
53function originIsAllowed(origin, self) {
54 return origin === self.opt.remixIdeUrl;
55}