socket_protobuf
Advanced tools
Comparing version 1.0.8 to 1.0.9
export declare class BufferReceiver { | ||
private buffer; | ||
private handler; | ||
constructor(onReceiveBuffer: (u8a: Buffer) => void); | ||
constructor(onReceiveBuffer: (buffer: Buffer) => void); | ||
dispose(): void; | ||
@@ -6,0 +6,0 @@ receiveData(buffer: Buffer): void; |
@@ -5,7 +5,6 @@ "use strict"; | ||
static send(socket, cmdId, newBuff) { | ||
let buffer = Buffer.alloc(BufferSender.headLength); | ||
buffer.writeUInt32BE(newBuff.byteLength, BufferSender.idxProtoLen); | ||
buffer.writeUInt32BE(cmdId, BufferSender.idxCmdId); | ||
buffer = Buffer.concat([buffer, newBuff]); | ||
return socket.write(buffer); | ||
let headBuffer = Buffer.alloc(BufferSender.headLength); //增加协议数据包头部,并设置协议ID、数据包长度 | ||
headBuffer.writeUInt32BE(newBuff.byteLength, BufferSender.idxProtoLen); | ||
headBuffer.writeUInt32BE(cmdId, BufferSender.idxCmdId); | ||
return socket.write(Buffer.concat([headBuffer, newBuff])); | ||
} | ||
@@ -12,0 +11,0 @@ } |
@@ -42,10 +42,4 @@ "use strict"; | ||
} | ||
async onMessage(cmdId, u8a) { | ||
const handler = this.handlerMgr.getHandler(cmdId); | ||
try { | ||
await handler.execute(cmdId, u8a); | ||
} | ||
catch (e) { | ||
console.error("句柄解析错误:" + cmdId + ":" + (e.stack || e)); | ||
} | ||
async onMessage(cmdId, buffer) { | ||
await this.handlerMgr.handleBuffer(cmdId, buffer); | ||
} | ||
@@ -52,0 +46,0 @@ onClose() { |
@@ -6,3 +6,7 @@ import { Handler } from "./Handler"; | ||
private handlers; | ||
private bufferHandler; | ||
constructor(server: ServerSocket); | ||
setBufferHandler(bufferHandler: (cmdId: number, buffer: Buffer) => Promise<void>): void; | ||
handleBuffer(cmdId: number, buffer: Buffer): Promise<void>; | ||
private handleBuffer0; | ||
getHandler(cmdId: number): Handler; | ||
@@ -9,0 +13,0 @@ setHandler(cmdId: number, handler: Handler): void; |
@@ -8,4 +8,20 @@ "use strict"; | ||
this.server = server; | ||
this.bufferHandler = this.handleBuffer0.bind(this); | ||
this.setHandler(Cmd.ServerInfo, new ServerInfoHandler_1.ServerInfoHandler()); | ||
} | ||
setBufferHandler(bufferHandler) { | ||
this.handleBuffer = bufferHandler; | ||
} | ||
async handleBuffer(cmdId, buffer) { | ||
this.bufferHandler(cmdId, buffer); | ||
} | ||
async handleBuffer0(cmdId, buffer) { | ||
const handler = this.handlers.get(cmdId); | ||
try { | ||
await handler.execute(cmdId, buffer); | ||
} | ||
catch (e) { | ||
console.error("句柄解析错误:" + cmdId + ":" + (e.stack || e)); | ||
} | ||
} | ||
getHandler(cmdId) { | ||
@@ -12,0 +28,0 @@ return this.handlers.get(cmdId); |
@@ -15,7 +15,2 @@ import { Socket } from "net"; | ||
private loopHandleBufferList; | ||
/** | ||
* Buffer传送给handler(句柄)处理 | ||
* @param buffer | ||
*/ | ||
private buffer2handler; | ||
send(cmdId: number, u8a: Uint8Array): void; | ||
@@ -22,0 +17,0 @@ readonly isActive: boolean; |
@@ -16,10 +16,10 @@ "use strict"; | ||
} | ||
onMessage(u8a) { | ||
onMessage(buffer) { | ||
if (!this.alive) { | ||
return; | ||
} | ||
this.receiver.receiveData(u8a); | ||
this.receiver.receiveData(buffer); | ||
} | ||
async handleBuffer(u8a) { | ||
this.packageList.push(u8a); | ||
async handleBuffer(buffer) { | ||
this.packageList.push(buffer); | ||
await this.loopHandleBufferList(); | ||
@@ -34,3 +34,3 @@ } | ||
try { | ||
await this.buffer2handler(buffer); | ||
await this.server.handlerMgr.handleBuffer(this.id, buffer); | ||
} | ||
@@ -45,13 +45,2 @@ catch (e) { | ||
} | ||
/** | ||
* Buffer传送给handler(句柄)处理 | ||
* @param buffer | ||
*/ | ||
async buffer2handler(buffer) { | ||
const cmdId = buffer.readUInt32BE(BufferSender_1.BufferSender.idxCmdId); | ||
let handler = this.server.handlerMgr.getHandler(cmdId); | ||
if (handler != null) { | ||
await handler.doHandler(cmdId, this.id, BufferReceiver_1.BufferReceiver.protobuf(buffer)); | ||
} | ||
} | ||
send(cmdId, u8a) { | ||
@@ -58,0 +47,0 @@ try { |
@@ -6,3 +6,17 @@ import { Handler } from "./Handler"; | ||
private handlers; | ||
private bufferHandler; | ||
constructor(server: ServerListener); | ||
setBufferHandler(bufferHandler: (socketId: number, buffer: Buffer) => Promise<void>): void; | ||
/** | ||
* Buffer传送给handler(句柄)处理 | ||
* @param socketId | ||
* @param buffer | ||
*/ | ||
handleBuffer(socketId: number, buffer: Buffer): Promise<void>; | ||
/** | ||
* 默认的Buffer数据流处理方法 | ||
* @param socketId | ||
* @param buffer | ||
*/ | ||
private handleBuffer0; | ||
getHandler(cmdId: number): Handler; | ||
@@ -9,0 +23,0 @@ setHandler(cmdId: number, handler: Handler): void; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const ClientHandler_1 = require("./ClientHandler"); | ||
const BufferSender_1 = require("../../BufferSender"); | ||
const BufferReceiver_1 = require("../../BufferReceiver"); | ||
class HandlerMgr { | ||
@@ -8,4 +10,28 @@ constructor(server) { | ||
this.server = server; | ||
this.bufferHandler = this.handleBuffer0.bind(this); | ||
this.setHandler0(Cmd.ServerInfo, new ClientHandler_1.ClientHandler()); | ||
} | ||
setBufferHandler(bufferHandler) { | ||
this.handleBuffer = bufferHandler; | ||
} | ||
/** | ||
* Buffer传送给handler(句柄)处理 | ||
* @param socketId | ||
* @param buffer | ||
*/ | ||
async handleBuffer(socketId, buffer) { | ||
await this.bufferHandler(socketId, buffer); | ||
} | ||
/** | ||
* 默认的Buffer数据流处理方法 | ||
* @param socketId | ||
* @param buffer | ||
*/ | ||
async handleBuffer0(socketId, buffer) { | ||
const cmdId = buffer.readUInt32BE(BufferSender_1.BufferSender.idxCmdId); | ||
let handler = this.server.handlerMgr.getHandler(cmdId); | ||
if (handler != null) { | ||
await handler.doHandler(cmdId, socketId, BufferReceiver_1.BufferReceiver.protobuf(buffer)); | ||
} | ||
} | ||
getHandler(cmdId) { | ||
@@ -12,0 +38,0 @@ return this.handlers.get(cmdId); |
{ | ||
"name": "socket_protobuf", | ||
"version": "1.0.8", | ||
"version": "1.0.9", | ||
"description": "socket发送protobuf二进制流的SDK", | ||
@@ -5,0 +5,0 @@ "main": "App.js", |
44514
1236