mirror of
https://github.com/2234839/web-font.git
synced 2026-09-12 11:45:44 +08:00
- 修复 fonteditor-core 模块声明(添加 FontEditor 命名空间、FontType 类型、SubsetOptions 接口) - 修复 llrt.ts 中 mkdir 和 rm 方法的返回类型问题 - 修复 tcp_server.ts 中 chunk 类型问题(添加 Buffer 类型检查和转换) - 修复 font_detail.ts 中缺失的 ORIGIN 导入 - 修复 subset.ts 中 subsetQueueTimeoutSeconds 的导入 - 为 Font 类添加 optimize() 和 write() 方法声明
58 lines
1.3 KiB
TypeScript
58 lines
1.3 KiB
TypeScript
import { createServer } from "net";
|
|
|
|
// 创建 TCP 服务器
|
|
export function createTcpServer(
|
|
onSocket: (socket: {
|
|
readable: ReadableStream<Uint8Array>;
|
|
writable: WritableStream<Uint8Array>;
|
|
close: () => void;
|
|
}) => void,
|
|
) {
|
|
const server = createServer((socket) => {
|
|
const readable = new ReadableStream<Uint8Array>({
|
|
start(controller) {
|
|
socket.on("data", (chunk: Buffer) => {
|
|
controller.enqueue(new Uint8Array(chunk));
|
|
});
|
|
socket.on("error", (err) => {
|
|
controller.error(err);
|
|
});
|
|
socket.on("close", () => {
|
|
controller.close();
|
|
});
|
|
},
|
|
cancel() {
|
|
socket.destroy();
|
|
},
|
|
});
|
|
|
|
// 创建 WritableStream
|
|
const writable = new WritableStream<Uint8Array>({
|
|
write(chunk) {
|
|
return new Promise<void>((resolve, reject) => {
|
|
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
socket.write(buffer, (err) => {
|
|
if (err) reject(err);
|
|
else resolve();
|
|
});
|
|
});
|
|
},
|
|
close() {
|
|
socket.end();
|
|
},
|
|
abort(reason) {
|
|
socket.destroy(reason);
|
|
},
|
|
});
|
|
|
|
// 实现 close 方法
|
|
function close() {
|
|
socket.end();
|
|
socket.destroy();
|
|
}
|
|
|
|
onSocket({ readable, writable, close });
|
|
});
|
|
return server;
|
|
}
|