Remove duplicated attachWebsocketServer module
Reviewed By: jeanlauliac Differential Revision: D8248752 fbshipit-source-id: b829de4b0d75d154dd80196b589fe70b0050be4d
This commit is contained in:
parent
970caa4552
commit
f68a04b05b
|
@ -18,7 +18,7 @@ const HmrServer = require('metro/src/HmrServer');
|
|||
|
||||
const {Terminal} = require('metro-core');
|
||||
|
||||
const attachWebsocketServer = require('./util/attachWebsocketServer');
|
||||
const attachWebsocketServer = require('metro/src/lib/attachWebsocketServer');
|
||||
const compression = require('compression');
|
||||
const connect = require('connect');
|
||||
const copyToClipBoardMiddleware = require('./middleware/copyToClipBoardMiddleware');
|
||||
|
|
|
@ -1,76 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
* @flow
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import type {Server as HTTPServer} from 'http';
|
||||
import type {Server as HTTPSServer} from 'https';
|
||||
|
||||
type WebsocketServiceInterface<T> = {
|
||||
+onClientConnect: (
|
||||
url: string,
|
||||
sendFn: (data: string) => mixed,
|
||||
) => Promise<T>,
|
||||
+onClientDisconnect?: (client: T) => mixed,
|
||||
+onClientError?: (client: T, e: Error) => mixed,
|
||||
+onClientMessage?: (client: T, message: string) => mixed,
|
||||
};
|
||||
|
||||
type HMROptions<TClient> = {
|
||||
httpServer: HTTPServer | HTTPSServer,
|
||||
websocketServer: WebsocketServiceInterface<TClient>,
|
||||
path: string,
|
||||
};
|
||||
|
||||
/**
|
||||
* Attaches a WebSocket based connection to the Packager to expose
|
||||
* Hot Module Replacement updates to the simulator.
|
||||
*/
|
||||
function attachWebsocketServer<TClient: Object>({
|
||||
httpServer,
|
||||
websocketServer,
|
||||
path,
|
||||
}: HMROptions<TClient>) {
|
||||
const WebSocketServer = require('ws').Server;
|
||||
const wss = new WebSocketServer({
|
||||
server: httpServer,
|
||||
path: path,
|
||||
});
|
||||
|
||||
wss.on('connection', async ws => {
|
||||
let connected = true;
|
||||
const url = ws.upgradeReq.url;
|
||||
|
||||
const sendFn = (...args) => {
|
||||
if (connected) {
|
||||
ws.send(...args);
|
||||
}
|
||||
};
|
||||
|
||||
const client = await websocketServer.onClientConnect(url, sendFn);
|
||||
|
||||
ws.on('error', e => {
|
||||
websocketServer.onClientError && websocketServer.onClientError(client, e);
|
||||
});
|
||||
|
||||
ws.on('close', () => {
|
||||
websocketServer.onClientDisconnect &&
|
||||
websocketServer.onClientDisconnect(client);
|
||||
connected = false;
|
||||
});
|
||||
|
||||
ws.on('message', message => {
|
||||
websocketServer.onClientMessage &&
|
||||
websocketServer.onClientMessage(client, message);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = attachWebsocketServer;
|
Loading…
Reference in New Issue