UNPKG

forwarder-node

Version:
121 lines (105 loc) 3.05 kB
let forwarder = require('./build/bin/forwarder.node'); let fwd = new forwarder.Forwarder(); //fwd.setupLogger(); //fwd.setDebug(true); //fwd.setLogLevel(1); console.log("pid", process.pid); const serverId = 1; fwd.initServers([{ "id": serverId, "desc": "client_ws", "netType": "ws", "port": 30501, "peers": 1, "encrypt": false, "encryptkey": "1234567812345678", "base64": false, "compress": false, // "address": "121.42.224.141", "address": "qd2.makebestgame.cn", timeoutMin: 1 * 60 * 1000, timeoutMax: 2 * 60 * 1000, "isClient": true, "reconnect": true }]); // fwd.setServerDebug(serverId, true); //fwd.setServerDebug(serverId, true); fwd.setProtocolRule(serverId, 2, "Process"); fwd.reconnect(serverId); let login = false; let tested = false; let token = null; const dLoginData = { channel_id: 'test', uuid: 'A18EF4E7-D920-434A-8BA0-CEBA48542308', }; const dTestData = { itemID: 'c9003', }; function getPacketData(cmd, data) { data.token = token; return { header: { _cmd: cmd, }, data, _cmd: cmd }; } function test() { const cID = 0; // 0: broadcast const isBroadcast = true; const isForceRaw = false; const isBatchMode = false; let dPacketData = null; if (!login) { dPacketData = getPacketData('player.login', dLoginData); } else if (!tested) { tested = true; dPacketData = getPacketData('chest.buy', dTestData); } else { process.exit(); } const data = JSON.stringify(dPacketData); // data = new Buffer(data); fwd.forwardText(serverId, 0, data, 0, 0, isBroadcast, isForceRaw, isBatchMode); // fwd.sendText(serverId, cID, data); // fwd.sendBinary(serverId, cID, new Buffer(data)); } function onCmd(dData, dHeader) { const cmd = dHeader._cmd; console.log("onCmd", cmd, dData); if (cmd === "player.login") { login = true; token = dData.token; } } setInterval(() => { do { fwd.pollOnce(serverId, 5); const evt = fwd.getCurEvent(); if (evt <= 0) { break; } let sID = fwd.getCurProcessServerID(); let cID = fwd.getCurProcessClientID(); console.log("evt", evt, "sID", sID, "cID", cID); switch (evt) { case 1: // connected setInterval(test, 2000); //fwd.setTimeout(serverId, 0, 1000, 2000); //fwd.setPingInterval(serverId, 1000); break; case 2: // disconnected // console.log("stat", fwd.stat()); break; case 3: // message let packet = fwd.getCurProcessPacket(); //console.log("header clientID", fwd.getCurHeaderClientID()); //console.log("header ip", fwd.getCurHeaderIP()); packet = JSON.parse(packet); onCmd(packet.data, packet.header); break; } } while (true); }, 0.01);