forked from circlecloud/tera
39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
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;
|