From 27b69c5d0d53cb9ad63bef8b374f2f4f36877a97 Mon Sep 17 00:00:00 2001 From: SikongJueluo Date: Wed, 26 Mar 2025 21:22:44 +0800 Subject: [PATCH] use tinypool --- server/udp.ts | 7 ++++++- server/udpServer.ts | 40 +++++++++++++++++++++------------------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/server/udp.ts b/server/udp.ts index 72ca459..1622af1 100644 --- a/server/udp.ts +++ b/server/udp.ts @@ -2,5 +2,10 @@ import { resolve } from "path"; import Tinypool from "tinypool"; const udpClientsPool = new Tinypool({ - filename: resolve(__dirname, "./udpClient.ts") + filename: resolve(__dirname, "./udpClient.ts"), + workerData: {} }) + +export function send() { + udpClientsPool.run({}, { name: "send" }) +} diff --git a/server/udpServer.ts b/server/udpServer.ts index 7a54a76..42f7eb5 100644 --- a/server/udpServer.ts +++ b/server/udpServer.ts @@ -1,33 +1,35 @@ -import { parentPort } from "worker_threads" -import { MsgProtocol } from "./msgProtocol" import _ from "lodash" +import { type udp } from "bun" declare var self: Worker export type UDPServerMsgType = "port" +interface BinaryTypeList { + arraybuffer: ArrayBuffer; + buffer: Buffer; + uint8array: Uint8Array; + // TODO: DataView + // dataview: DataView; +} +type BinaryType = keyof BinaryTypeList; + + + const udpServer = await Bun.udpSocket({ port: 33000, socket: { - data(_socket, _buf, _port, _addr) { + data( + _socket: udp.Socket, + data: BinaryTypeList[BinaryType], + port: number, + address: string, + ) { // todo : Handle Recieved Data } } }) -parentPort?.on("message", (msg: MsgProtocol.MessageQuery) => { - if (MsgProtocol.isMessageQuery(msg)) { - switch (msg.command) { - case "port": { - postMessage(MsgProtocol.genMessageResult(udpServer.port, msg)) - break - } - default: { - break - } - } - } else { - return - } -}) -postMessage("UDP Server Start Successfully!") +export function udpServerPort(): number { + return udpServer.port +}