Summary: I feel like doing async stuff here isn't a good idea in general. But more pressingly, it means you can't immediately call server.close() after new Server(), because the things to close haven't been created yet. Reviewed By: danielbuechele Differential Revision: D10488301 fbshipit-source-id: 76ebe91e0c09f353e0bdb9f2e4116757e757abb2
52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
/**
|
|
* Copyright 2018-present Facebook.
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
* @format
|
|
*/
|
|
|
|
import Server from '../server.js';
|
|
|
|
import type {Store} from '../reducers/index.js';
|
|
import type Logger from '../fb-stubs/Logger.js';
|
|
import type Client from '../Client.js';
|
|
|
|
export default (store: Store, logger: Logger) => {
|
|
const server = new Server(logger, store);
|
|
server.init();
|
|
|
|
server.addListener('new-client', (client: Client) => {
|
|
store.dispatch({
|
|
type: 'NEW_CLIENT',
|
|
payload: client,
|
|
});
|
|
});
|
|
|
|
server.addListener('removed-client', (id: string) => {
|
|
store.dispatch({
|
|
type: 'CLIENT_REMOVED',
|
|
payload: id,
|
|
});
|
|
store.dispatch({
|
|
type: 'CLEAR_PLUGIN_STATE',
|
|
payload: id,
|
|
});
|
|
});
|
|
|
|
server.addListener('error', err => {
|
|
const payload: string =
|
|
err.code === 'EADDRINUSE'
|
|
? "Couldn't start websocket server. Looks like you have multiple copies of Flipper running."
|
|
: err.message || 'Unknown error';
|
|
|
|
store.dispatch({
|
|
type: 'SERVER_ERROR',
|
|
payload,
|
|
});
|
|
});
|
|
|
|
window.addEventListener('beforeunload', () => {
|
|
server.close();
|
|
});
|
|
};
|