tera/src/rpc/server/ws-server/pow-server.ts

37 lines
1.1 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';
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;