123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- var net = require('net');
- var fs = require('fs'); // 载入fs模块
- var HOST = '0.0.0.0';
- var PORT = 6800;
- // var HOST = '192.168.2.109';
- // var PORT = 43212;
- var client = new net.Socket();
- //const log = require('simple-node-logger').createSimpleFileLogger('./server.log');
- var lastBuffer = null;
- // 连接状态码首次连接没连接上 一直等待 等接上了再发送连通性测试
- var connectFlag = 1
- client.connect(PORT, HOST, function () {
- connectFlag = 2
- console.log('connected')
- //一开始就连接上 发送连通性测试
- client.emit('initConnect','1');
- });
- var flag = 0
- var time = 0
- client.on('error', function (ex) {
- console.log("Socket Client Connect error");
- console.log(ex);
- });
- // 为这个socket实例添加一个"close"事件处理函数
- client.on('close', function () {
- if(flag == 0){
- client.emit('disconnect','0');
- time = new Date();
- }
- flag = 1;
- connectFlag = 1
- if(connectFlag == 1) {
- // 有连接过才能进行等待重连操作
- console.log('Socket CLOSED,1 seconds retry connect');
- setTimeout(function () {
- client.connect(PORT, HOST,function () {
- if(flag == 1){
- flag = 2;
- }
- });
- }, 1000);
- }
- // client.emit('reconnectClose','3');
- });
- let start = new Date().getTime()
- client.on('data', function (data) {
- //console.log("data",new Date().getTime()-start);
- //log.info("data",new Date().getTime()-start);
- start = new Date().getTime();
- if (lastBuffer !== null) {
- data = Buffer.concat([lastBuffer, data]);
- }
- let flag = 1;
- while(flag){
- // 上一条数据流正常
- // 先读取长度
- //log.info('demo')
- let validNumByteArray = new Uint8Array(data.slice(2, 6));
- let validNum = new DataView(validNumByteArray.buffer).getInt32();
- // 接收到的数据长度大于有效数据长度,说明后面有新的协议
- if (data.length > 6 + validNum + 1) {
- let validData = data.slice(0, 6 + validNum + 1);
- client.emit('validData', validData);
- // 将多余部分存起来
- lastBuffer = data.slice(6 + validNum + 1);
- if(lastBuffer.length >6){
- data = lastBuffer;
- continue;
- }
- } else if (data.length === 6 + validNum + 1) {
- client.emit('validData', data);
- lastBuffer = null;
- } else {
- // 存起来下次拼接
- lastBuffer = data;
- }
- flag = 0;
- }
- });
- module.exports = client;
|