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'; import WebNamespace from './web-server' @namespace('/pow') class PowNamespace implements interfaces.Namespace { @lazyInjectNamed(TYPE.Namespace, WebNamespace.name) webNsp: interfaces.Namespace; nsp: Namespace; connection(socket: io.Socket) { teraManager.pows[socket.id] = socket; } @listener() web(socket: io.Socket, msg: any) { this.webNsp.nsp.send('Recover From Pow: ' + JSON.stringify(msg)) } @listener() message(socket: io.Socket, msg: any) { this.webNsp.nsp.to('pow').send(msg); switch (msg.cmd) { case "POW": global.SERVER.MiningProcess(msg); break; case "HASHRATE": global.ADD_HASH_RATE(msg.CountNonce); break; } } disconnect(socket: io.Socket) { delete teraManager.pows[socket.id] } } export default PowNamespace;