padlocal-client-ts
Version:
Padlocal ts client
55 lines • 3.09 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SocketStreamHandler = void 0;
const StreamHandler_1 = require("./StreamHandler");
const padlocal_pb_1 = require("../proto/padlocal_pb");
const SocketClient_1 = require("./SocketClient");
const ByteUtils_1 = require("../utils/ByteUtils");
const SerialExecutor_1 = require("../utils/SerialExecutor");
class SocketStreamHandler extends StreamHandler_1.StreamHandler {
constructor(request) {
super(request);
this._callbackExecutor = new SerialExecutor_1.SerialExecutor();
}
onRequest(wechatStreamRequest) {
const socketRequest = wechatStreamRequest.getSocketrequest();
if (socketRequest.getHost()) {
this._host = socketRequest.getHost();
}
if (this._sendDataBuffer) {
this._sendDataBuffer = ByteUtils_1.joinBytes(this._sendDataBuffer, Buffer.from(socketRequest.getPayload()));
}
else {
this._sendDataBuffer = Buffer.from(socketRequest.getPayload());
}
if (wechatStreamRequest.getEof()) {
this._socketClient = new SocketClient_1.SocketClient(this._host.getHost(), this._host.getPort(), this._request.traceId, {
onConnect: () => __awaiter(this, void 0, void 0, function* () {
yield this._callbackExecutor.execute(() => __awaiter(this, void 0, void 0, function* () {
yield this.sendResponse(new padlocal_pb_1.WeChatStreamResponse().setSocketresponse(new padlocal_pb_1.WeChatSocketResponse().setSocketreset(true)));
}));
}),
onReceive: (data) => __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve) => {
this._callbackExecutor.execute(() => __awaiter(this, void 0, void 0, function* () {
const responseReply = yield this.sendResponse(new padlocal_pb_1.WeChatStreamResponse().setSocketresponse(new padlocal_pb_1.WeChatSocketResponse().setPayload(data)));
resolve(responseReply.getEof());
}));
});
}),
});
this._socketClient.send(this._sendDataBuffer).then();
}
}
}
exports.SocketStreamHandler = SocketStreamHandler;
//# sourceMappingURL=SocketStreamHandler.js.map