UNPKG

sitnihil

Version:
98 lines (79 loc) 3.24 kB
import { Actor } from 'omelox-robot'; import { PinusWSClient, OmeloxWSClientEvent} from 'omelox-robot-plugin'; export class Robot { constructor(private actor: Actor) { } openid = String(Math.round(Math.random() * 1000)); pinusClient = new PinusWSClient(); public connectGate(): void { let host = '127.0.0.1'; let port = '3014'; this.pinusClient.on(OmeloxWSClientEvent.EVENT_IO_ERROR, (event) => { // 错误处理 console.error('error', event); }); this.pinusClient.on(OmeloxWSClientEvent.EVENT_CLOSE, function(event) { // 关闭处理 console.error('close', event); }); this.pinusClient.on(OmeloxWSClientEvent.EVENT_HEART_BEAT_TIMEOUT, function(event) { // 心跳timeout console.error('heart beat timeout', event); }); this.pinusClient.on(OmeloxWSClientEvent.EVENT_KICK, function(event) { // 踢出 console.error('kick', event); }); // this.actor.emit("incr" , "gateConnReq"); this.actor.emit('start' , 'gateConn' , this.actor.id); this.pinusClient.init({ host: host, port: port }, () => { this.actor.emit('end' , 'gateConn' , this.actor.id); // 连接成功执行函数 console.log('gate连接成功'); this.gateQuery(); }); } gateQuery() { // this.actor.emit("incr" , "gateQueryReq"); this.actor.emit('start' , 'gateQuery' , this.actor.id); this.pinusClient.request('gate.gateHandler.queryEntry', {uid: this.openid} , (result: {code: number , host: string , port: number}) => { // 消息回调 // console.log("gate返回",JSON.stringify(result)); this.actor.emit('end' , 'gateQuery' , this.actor.id); this.pinusClient.disconnect(); this.connectToConnector(result); }); } connectToConnector(result: {host: string , port: number}) { // this.actor.emit("incr" , "loginConnReq"); this.actor.emit('start' , 'loginConn' , this.actor.id); this.pinusClient.init({ host: result.host, port: result.port }, () => { this.actor.emit('end' , 'loginConn' , this.actor.id); // 连接成功执行函数 console.log('connector连接成功'); this.loginQuery({rid: this.actor.id.toString() , username : this.actor.id.toString()}); }); } loginQuery(result: {rid: string, username: string}) { // this.actor.emit("incr" , "loginQueryReq"); this.actor.emit('start' , 'loginQuery' , this.actor.id); this.pinusClient.request('connector.entryHandler.enter', result , (ret: any) => { // 消息回调 this.actor.emit('end' , 'loginQuery' , this.actor.id); console.log('connector返回', JSON.stringify(result)); setTimeout(() => this.loginQuery(result) , Math.random() * 5000 + 1000); }); } } export default function(actor: Actor) { let client = new Robot(actor); client.connectGate(); return client; }