|
@@ -2,9 +2,10 @@
|
|
|
import { Server, Socket } from 'socket.io';
|
|
|
import * as http from 'http';
|
|
|
import chalk from 'chalk';
|
|
|
-import { serverEvent } from './events';
|
|
|
import { WS_EVENTS } from './utils';
|
|
|
+
|
|
|
export let io: Server;
|
|
|
+export let clients = new Map<string, Socket>();
|
|
|
|
|
|
export function initWebSocket(server: http.Server) {
|
|
|
io = new Server(server, {
|
|
@@ -15,30 +16,15 @@ export function initWebSocket(server: http.Server) {
|
|
|
});
|
|
|
|
|
|
io.on('connection', (socket: Socket) => {
|
|
|
- console.info(
|
|
|
- chalk.green(`ws client connected ${socket.client.conn.remoteAddress}`)
|
|
|
- );
|
|
|
-
|
|
|
- socket.on(WS_EVENTS.COLLECTION, (message: any) => {
|
|
|
- socket.emit(WS_EVENTS.COLLECTION, { data: message });
|
|
|
- });
|
|
|
-
|
|
|
- // frontend emit -> serverEvent.emit -> server event handler
|
|
|
- socket.on(WS_EVENTS.TO_SERVER, (msg: any) => {
|
|
|
- serverEvent.emit(msg.event, msg);
|
|
|
- });
|
|
|
-
|
|
|
- // server emit -> socket emit -> frontend event handler
|
|
|
- serverEvent.on(WS_EVENTS.TO_CLIENT, (msg: any) => {
|
|
|
- socket.emit(msg.event, msg.data);
|
|
|
- });
|
|
|
+ // register client
|
|
|
+ socket.on(WS_EVENTS.REGISTER, (clientId: string) => {
|
|
|
+ clients.set(clientId, socket);
|
|
|
+ console.info(chalk.green(`ws client connected ${clientId}`));
|
|
|
|
|
|
- socket.on('disconnect', () => {
|
|
|
- console.info(
|
|
|
- chalk.green(
|
|
|
- `ws client disconnected ${socket.client.conn.remoteAddress}`
|
|
|
- )
|
|
|
- );
|
|
|
+ socket.on('disconnect', () => {
|
|
|
+ console.info(chalk.green(`ws client disconnected ${clientId}`));
|
|
|
+ clients.delete(clientId);
|
|
|
+ });
|
|
|
});
|
|
|
});
|
|
|
}
|