@sanctumterra/raknet 1.3.61 → 1.3.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,6 +10,7 @@ export declare class Client extends Emitter<ClientEvents> {
10
10
  private advertisement;
11
11
  constructor(options: Partial<ClientOptions>);
12
12
  connect(): Promise<Advertisement>;
13
+ receive(): Promise<void>;
13
14
  ping(): Promise<Advertisement>;
14
15
  frameAndSend(buffer: Buffer): void;
15
16
  private handleData;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAaN,KAAK,aAAa,EAClB,MAAM,UAAU,CAAC;AAElB,qBAAa,MAAO,SAAQ,OAAO,CAAC,YAAY,CAAC;IAChD,OAAO,CAAC,SAAS,CAAY;IAEtB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAG,MAAM,CAAC,OAAO,CAAC;IACxB,IAAI,SAAK;IAChB,OAAO,CAAC,aAAa,CAAiB;gBAE1B,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC;IAW9B,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IAoBjC,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC;IAwBpC,YAAY,CAAC,MAAM,EAAE,MAAM;IAIlC,OAAO,CAAC,UAAU;CAqElB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKpD,OAAO,EAaN,KAAK,aAAa,EAClB,MAAM,UAAU,CAAC;AAElB,qBAAa,MAAO,SAAQ,OAAO,CAAC,YAAY,CAAC;IAChD,OAAO,CAAC,SAAS,CAAY;IAEtB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAG,MAAM,CAAC,OAAO,CAAC;IACxB,IAAI,SAAK;IAChB,OAAO,CAAC,aAAa,CAAiB;gBAE1B,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC;IAW9B,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IAgBxC,OAAO;IAiCA,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC;IAwBpC,YAAY,CAAC,MAAM,EAAE,MAAM;IAIlC,OAAO,CAAC,UAAU;CAqElB"}
@@ -21,14 +21,10 @@ class Client extends emitter_1.default {
21
21
  }
22
22
  async connect() {
23
23
  this.ticker = setInterval(() => {
24
- this.rakSocket.receive();
25
24
  this.rakSocket.tick();
26
- const data = this.rakSocket.onEvent();
27
- if (data) {
28
- this.handleData(Buffer.from(data.data));
29
- }
30
25
  this.tick++;
31
- }, 20);
26
+ }, 50);
27
+ this.receive();
32
28
  await this.ping();
33
29
  this.rakSocket.connect();
34
30
  return new Promise((resolve, reject) => {
@@ -38,6 +34,33 @@ class Client extends emitter_1.default {
38
34
  });
39
35
  });
40
36
  }
37
+ async receive() {
38
+ const MAX_EVENTS_PER_BATCH = 64;
39
+ while (true) {
40
+ try {
41
+ this.rakSocket.receive();
42
+ const events = [];
43
+ let event;
44
+ while (events.length < MAX_EVENTS_PER_BATCH &&
45
+ // biome-ignore lint/suspicious/noAssignInExpressions: <explantion>
46
+ (event = this.rakSocket.onEvent())) {
47
+ if (event?.data) {
48
+ events.push(Buffer.from(event.data));
49
+ }
50
+ }
51
+ if (events.length > 0) {
52
+ for (const eventData of events) {
53
+ this.handleData(eventData);
54
+ }
55
+ }
56
+ await new Promise(setImmediate);
57
+ }
58
+ catch (error) {
59
+ console.error("Error in receive loop:", error);
60
+ await new Promise((resolve) => setTimeout(resolve, 100));
61
+ }
62
+ }
63
+ }
41
64
  async ping() {
42
65
  return new Promise((resolve, reject) => {
43
66
  const timeout = setTimeout(() => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanctumterra/raknet",
3
- "version": "1.3.61",
3
+ "version": "1.3.62",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {