Skip to content

Commit a4a556c

Browse files
committed
format source code
1 parent a45ec14 commit a4a556c

File tree

4 files changed

+82
-95
lines changed

4 files changed

+82
-95
lines changed

example.js

Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,53 @@
11

22
var port = 11001; //服务器端口
33
var server = "10.3.0.175"; //服务器IP
4-
var tid = "1"; //客户端或教室ID
4+
var token = "123"; //注册token
55

66
var TAG_SEND_REGIST = 1; //客户端注册
77
var TAG_SEND_PING = 112; //客户端心跳响应
8-
var TAG_FROM_REGIST_SUCCESS = 1; //客户端注册成功
9-
var TAG_FROM_REGIST_FAIL = 0; //客户端注册失败
10-
var TAG_FROM_PING = 112; //服务端心跳指令
11-
var TAG_FROM_END_QUIZ = 8; //答题结束
12-
var TAG_FROM_START_QUIZ = 7; //开始答题
13-
var TAG_FROM_ANSWER = 10; //学生答题
14-
var TAG_FROM_CLOSE = 11; //关闭或未就绪状态
8+
var TAG_FROM_REGIST_SUCCESS = 'a'; //客户端注册成功
9+
var TAG_FROM_REGIST_FAIL = 'b'; //客户端注册失败
10+
var TAG_FROM_PING = 'p'; //收到服务端心跳指令
11+
var TAG_FROM_CLOSE = 'c'; //连接被服务端关闭
1512

1613
var showDebugData = false;
17-
var needReconnect = true;
1814

19-
//和服务器建立socket连接
2015
var socket = require("./index");
2116
// socket.setDebuger(appendLog);
22-
socket.connect(port, server, function(){
23-
socket.send(TAG_SEND_REGIST, {classId: tid});
24-
}, render, function(){
25-
if (needReconnect) {
26-
setTimeout(socket.connect, 1000);
27-
}
28-
});
17+
socket.connect(port, server, onConnected, onReceived);
18+
19+
function onConnected () {
20+
socket.send(TAG_SEND_REGIST, { token: token });
21+
}
2922

30-
function render(tag, value){
23+
function onReceived (tag, value) {
3124
if (tag != TAG_FROM_PING)
32-
appendLog('[Received data] tag: ' + tag + ' value: ' + JSON.stringify(value));
25+
appendLog('[Received] tag: ' + tag + ' value: ' + JSON.stringify(value));
3326

3427
switch (tag){
35-
case TAG_FROM_REGIST_SUCCESS: //注册成功
36-
//needReconnect = false;
37-
break;
38-
case TAG_FROM_REGIST_FAIL: //注册失败
39-
//needReconnect = true;
40-
break;
41-
case TAG_FROM_PING: //心跳
42-
socket.send(TAG_SEND_PING);
43-
break;
44-
case TAG_FROM_CLOSE: //关闭
28+
case TAG_FROM_REGIST_SUCCESS:
4529

4630
break;
47-
case TAG_FROM_END_QUIZ: //结束答题
31+
case TAG_FROM_REGIST_FAIL:
4832

4933
break;
50-
case TAG_FROM_START_QUIZ: //开始答题
51-
34+
case TAG_FROM_PING:
35+
socket.send(TAG_SEND_PING);
5236
break;
53-
case TAG_FROM_ANSWER: //学生答题
37+
case TAG_FROM_CLOSE:
5438

5539
break;
5640
}
5741
}
5842

59-
function appendLog(log){
43+
function appendLog (log) {
6044
if (showDebugData == false) return;
6145

6246
var debugText = document.getElementById('debugText');
6347
if (debugText) {
6448
debugText.innerHTML += log + "<br>";
6549
debugText.scrollTop = debugText.scrollHeight;
50+
} else {
51+
console.log(log);
6652
}
6753
}

index.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ function connect(port, host, onConnected, onReceived, onClosed){
5353

5454
client.on('timeout', function() {
5555
debuger('The socket times out.');
56-
//setTimeout(reconnect, 1000);
56+
setTimeout(reconnect, 1000);
5757
});
5858
});
5959

@@ -66,7 +66,7 @@ function connect(port, host, onConnected, onReceived, onClosed){
6666
debuger('The socket closed.');
6767
});
6868

69-
//client.setTimeout(15000);
69+
client.setTimeout(15000);
7070
}
7171

7272
function reconnect(){
@@ -93,17 +93,19 @@ function send(cmd, arg){
9393
len = Buffer.byteLength(data);
9494
}
9595

96-
//写入1个字节的tag
96+
// TLV pack
97+
98+
// Write the tag: use one byte
9799
var tagBuf = new Buffer(1);
98100
tagBuf.writeInt8(cmd, 0);
99101
client.write(tagBuf);
100102

101-
//写入4个字节的length
103+
// Write the length of value: use four bytes
102104
var headBuf = new Buffer(4);
103105
headBuf.writeUInt32BE(len, 0);
104106
client.write(headBuf);
105107

106-
//写入value
108+
// Then, write the value
107109
if (len > 0){
108110
var bodyBuf = new Buffer(len);
109111
bodyBuf.write(data);

lib/ExBuffer.js

Lines changed: 54 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
/*!
1+
/**
22
* ExBuffer TCP中的粘包、分包问题的解决方案!
3-
*
43
* @update 包结构支持TLV格式 --by xp
54
*/
65

76
const util = require('util');
87
const EventEmitter = require('events');
98

10-
/*
11-
* 构造方法
12-
* @param bufferLength 缓存区长度,默认512 byte
13-
*/
9+
/**
10+
* 构造方法
11+
* @param bufferLength 缓存区长度,默认512 byte
12+
*/
1413
var ExBuffer = function (bufferLength) {
1514
EventEmitter.call(this); //继承事件类
1615

@@ -24,56 +23,56 @@ var ExBuffer = function (bufferLength) {
2423
var _tagLen = 0;
2524
var _tag = 0;
2625

27-
/*
28-
* 指定指令Tag长是int8型即占1个字节(默认不包含tag结构)
29-
*/
26+
/**
27+
* 指定指令Tag长是int8型即占1个字节(默认不包含tag结构)
28+
*/
3029
this.int8Tag = function(){
3130
_tagLen = 1;
3231
return this;
3332
};
3433

35-
/*
36-
* 指定包长是uint32型(默认是ushort型)
37-
*/
34+
/**
35+
* 指定包长是uint32型(默认是ushort型)
36+
*/
3837
this.uint32Head = function(){
3938
_headLen = 4;
4039
return this;
4140
};
4241

43-
/*
44-
* 指定包长是ushort型(默认是ushort型)
45-
*/
42+
/**
43+
* 指定包长是ushort型(默认是ushort型)
44+
*/
4645
this.ushortHead = function(){
4746
_headLen = 2;
4847
return this;
4948
};
5049

51-
/*
52-
* 指定字节序 为Little Endian (默认:Big Endian)
53-
*/
50+
/**
51+
* 指定字节序 为Little Endian (默认:Big Endian)
52+
*/
5453
this.littleEndian = function(){
5554
_endian = 'L';
5655
return this;
5756
};
5857

59-
/*
60-
* 指定字节序 为Big Endian (默认:Big Endian)
61-
*/
58+
/**
59+
* 指定字节序 为Big Endian (默认:Big Endian)
60+
*/
6261
this.bigEndian = function(){
6362
_endian = 'B';
6463
return this;
6564
};
6665

67-
/*
68-
* 送入一端Buffer
69-
*/
66+
/**
67+
* 送入一端Buffer
68+
*/
7069
this.put = function(buffer,offset,len){
71-
if(offset == undefined)offset = 0;
72-
if(len == undefined)len = buffer.length - offset;
70+
if (offset == undefined) offset = 0;
71+
if (len == undefined) len = buffer.length - offset;
7372
//buf.copy(targetBuffer, [targetStart], [sourceStart], [sourceEnd])
7473
//当前缓冲区已经不能满足次数数据了
75-
if(len + getLen() > _buffer.length){
76-
var ex = Math.ceil((len + getLen())/(1024));//每次扩展1kb
74+
if (len + getLen() > _buffer.length) {
75+
var ex = Math.ceil((len + getLen()) / 1024); //每次扩展1kb
7776
var tmp = new Buffer(ex * 1024);
7877
var exlen = tmp.length - _buffer.length;
7978
_buffer.copy(tmp);
@@ -91,11 +90,11 @@ var ExBuffer = function (bufferLength) {
9190
}
9291
_buffer = tmp;
9392
}
94-
if(getLen() == 0){
93+
if (getLen() == 0) {
9594
_putOffset = _readOffset = 0;
9695
}
9796
//判断是否会冲破_buffer尾部
98-
if((_putOffset + len) > _buffer.length){
97+
if ((_putOffset + len) > _buffer.length) {
9998
//分两次存 一部分存在数据后面 一部分存在数据前面
10099
var len1 = _buffer.length - _putOffset;
101100
if (len1 > 0) {
@@ -106,8 +105,8 @@ var ExBuffer = function (bufferLength) {
106105
var len2 = len - len1;
107106
buffer.copy(_buffer,0,offset,offset + len2);
108107
_putOffset = len2;
109-
}else{
110-
buffer.copy(_buffer,_putOffset,offset,offset + len);
108+
} else {
109+
buffer.copy(_buffer, _putOffset, offset, offset + len);
111110
_putOffset += len;
112111
}
113112
proc();
@@ -120,59 +119,59 @@ var ExBuffer = function (bufferLength) {
120119
//console.log('_putOffset:'+_putOffset);
121120
//console.log(_buffer);
122121
count++;
123-
if(count>1000)break;//1000次还没读完??
124-
if(_dlen == 0){
125-
if(getLen() < (_headLen + _tagLen)){
126-
break;//连包头都读不了
122+
if (count > 1000) break; //1000次还没读完??
123+
if (_dlen == 0) {
124+
if (getLen() < (_headLen + _tagLen)) {
125+
break; //连包头都读不了
127126
}
128-
if(_buffer.length - _readOffset >= (_headLen + _tagLen)){
129-
if (_tagLen > 0){
130-
if (_tagLen == 1){
127+
if (_buffer.length - _readOffset >= (_headLen + _tagLen)) {
128+
if (_tagLen > 0) {
129+
if (_tagLen == 1) {
131130
_tag = _buffer['readInt8'](_readOffset);
132131
} else {
133-
_tag = _buffer['readInt' + (8*_tagLen) + ''+ _endian +'E'](_readOffset);
132+
_tag = _buffer['readInt' + (8 * _tagLen) + '' + _endian + 'E'](_readOffset);
134133
}
135134
}
136135
_readOffset += _tagLen;
137-
_dlen = _buffer['readUInt' + (8*_headLen) + ''+ _endian +'E'](_readOffset);
136+
_dlen = _buffer['readUInt' + (8 * _headLen) + '' + _endian + 'E'](_readOffset);
138137
_readOffset += _headLen;
139138
}else {//
140139
var hbuf = new Buffer(_headLen + _tagLen);
141140
var rlen = 0;
142-
for(var i = 0;i<(_buffer.length + _tagLen - _readOffset);i++){
141+
for (var i = 0; i < (_buffer.length + _tagLen - _readOffset); i++) {
143142
hbuf[i] = _buffer[_readOffset++];
144143
rlen++;
145144
}
146145
_readOffset = 0;
147-
for(var i = 0;i<(_headLen + _tagLen - rlen);i++){
146+
for (var i = 0; i < (_headLen + _tagLen - rlen); i++) {
148147
hbuf[rlen+i] = _buffer[_readOffset++];
149148
}
150-
if (_tagLen > 0){
151-
if (_tagLen == 1){
149+
if (_tagLen > 0) {
150+
if (_tagLen == 1) {
152151
_tag = hbuf['readInt8'](0);
153152
} else {
154-
_tag = hbuf['readInt' + (8*_tagLen) + ''+ _endian +'E'](0);
153+
_tag = hbuf['readInt' + (8 * _tagLen) + '' + _endian + 'E'](0);
155154
}
156155
}
157-
_dlen = hbuf['readUInt' + (8*_headLen) + ''+ _endian +'E'](_tagLen);
156+
_dlen = hbuf['readUInt' + (8 * _headLen) + '' + _endian + 'E'](_tagLen);
158157
}
159158
}
160159

161160
//console.log('_dlen:'+_dlen + ',unreadLen:'+getLen());
162161

163-
if(getLen() >= _dlen){
162+
if (getLen() >= _dlen) {
164163
var dbuff = new Buffer(_dlen);
165-
if(_readOffset + _dlen > _buffer.length){
164+
if (_readOffset + _dlen > _buffer.length) {
166165
var len1 = _buffer.length - _readOffset;
167166
if (len1 > 0) {
168-
_buffer.copy(dbuff,0,_readOffset,_readOffset + len1);
167+
_buffer.copy(dbuff, 0, _readOffset, _readOffset + len1);
169168
}
170169

171170
_readOffset = 0;
172171
var len2 = _dlen - len1;
173-
_buffer.copy(dbuff,len1,_readOffset,_readOffset += len2);
172+
_buffer.copy(dbuff, len1, _readOffset, _readOffset += len2);
174173
}else {
175-
_buffer.copy(dbuff,0,_readOffset,_readOffset += _dlen);
174+
_buffer.copy(dbuff, 0, _readOffset, _readOffset += _dlen);
176175
}
177176
try {
178177
_dlen = 0;
@@ -197,13 +196,13 @@ var ExBuffer = function (bufferLength) {
197196

198197
//获取现在的数据长度
199198
function getLen() {
200-
if(_putOffset>= _readOffset){
199+
if (_putOffset >= _readOffset) {
201200
return _putOffset - _readOffset;
202201
}
203202
return _buffer.length - _readOffset + _putOffset;
204203
}
205204
};
206205

207-
util.inherits(ExBuffer, EventEmitter);//继承事件类
206+
util.inherits(ExBuffer, EventEmitter); // 继承事件类
208207

209-
module.exports = exports = ExBuffer;
208+
module.exports = ExBuffer;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "node-socket",
3-
"version": "1.0.1",
3+
"version": "1.0.2",
44
"description": "TCP Socket with TLV packet (Node端基于TLV二进制协议格式进行封装的socket工具库,包括粘包断包处理)",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)