import { namespace, listener, io, TYPE, interfaces } from '@cc-server/ws' import { Namespace } from 'socket.io'; import { lazyInjectNamed } from '@cc-server/ioc'; import { teraManager } from '../../manager'; @namespace('/web') class WebNamespace implements interfaces.Namespace { nsp: Namespace; connection(socket: io.Socket) { socket.send('Connect succseful...') } @listener() webmsg(socket: io.Socket, msg: any) { global.ToLog(`Recover webmsg ${JSON.stringify(msg)}`) switch (msg.cmd) { case "list": socket.send(`Client List:`) let index = 0; for (let id in teraManager.pows) { const pow = teraManager.pows[id]; socket.send(`${index} => ${pow.id}: ${pow.conn.remoteAddress}`) index++ } break; case "pow": socket.send('Join Pow Room...') socket.join('pow') break; case "leavepow": socket.leave('pow') socket.send('Leave Pow Room...') break; } } } export default WebNamespace;