@litert/televoke 1.1.0 → 1.2.0

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.
Files changed (206) hide show
  1. package/CHANGES.md +9 -0
  2. package/lib/client/Client.decl.d.ts +1 -1
  3. package/lib/client/Client.decl.js +1 -1
  4. package/lib/client/JsonApiClient.impl.d.ts +1 -1
  5. package/lib/client/JsonApiClient.impl.js +1 -1
  6. package/lib/client/index.d.ts +1 -1
  7. package/lib/client/index.js +1 -1
  8. package/lib/index.d.ts +1 -1
  9. package/lib/index.js +1 -1
  10. package/lib/server/LegacyServerChannel.impl.d.ts +1 -1
  11. package/lib/server/LegacyServerChannel.impl.js +1 -1
  12. package/lib/server/Server.decl.d.ts +1 -1
  13. package/lib/server/Server.decl.js +1 -1
  14. package/lib/server/Server.impl.d.ts +1 -1
  15. package/lib/server/Server.impl.js +1 -1
  16. package/lib/server/ServerChannel.d.ts +1 -1
  17. package/lib/server/ServerChannel.js +1 -1
  18. package/lib/server/SimpleJsonApiRouter.d.ts +1 -1
  19. package/lib/server/SimpleJsonApiRouter.js +1 -1
  20. package/lib/server/index.d.ts +1 -1
  21. package/lib/server/index.js +1 -1
  22. package/lib/shared/BinaryStream.d.ts +1 -1
  23. package/lib/shared/BinaryStream.js +1 -1
  24. package/lib/shared/BinaryStreamManager.d.ts +1 -1
  25. package/lib/shared/BinaryStreamManager.js +1 -1
  26. package/lib/shared/Channel.impl.d.ts +1 -1
  27. package/lib/shared/Channel.impl.js +1 -1
  28. package/lib/shared/Constants.d.ts +1 -1
  29. package/lib/shared/Constants.js +1 -1
  30. package/lib/shared/Encodings/index.d.ts +1 -1
  31. package/lib/shared/Encodings/index.js +1 -1
  32. package/lib/shared/Encodings/v1/EncoderV1.d.ts +1 -1
  33. package/lib/shared/Encodings/v1/EncoderV1.js +1 -1
  34. package/lib/shared/Encodings/v1/Protocol.v1.decls.d.ts +1 -1
  35. package/lib/shared/Encodings/v1/Protocol.v1.decls.js +1 -1
  36. package/lib/shared/Encodings/v1/index.d.ts +1 -1
  37. package/lib/shared/Encodings/v1/index.js +1 -1
  38. package/lib/shared/Encodings/v2/Constants.v2.d.ts +1 -1
  39. package/lib/shared/Encodings/v2/Constants.v2.js +1 -1
  40. package/lib/shared/Encodings/v2/DecoderV2.d.ts +1 -1
  41. package/lib/shared/Encodings/v2/DecoderV2.js +1 -1
  42. package/lib/shared/Encodings/v2/EncoderV2.d.ts +1 -1
  43. package/lib/shared/Encodings/v2/EncoderV2.js +1 -1
  44. package/lib/shared/Encodings/v2/Encoding.v2.decl.d.ts +1 -1
  45. package/lib/shared/Encodings/v2/Encoding.v2.decl.js +1 -1
  46. package/lib/shared/Encodings/v2/index.d.ts +1 -1
  47. package/lib/shared/Encodings/v2/index.js +1 -1
  48. package/lib/shared/Errors.d.ts +1 -1
  49. package/lib/shared/Errors.d.ts.map +1 -1
  50. package/lib/shared/Errors.js +1 -1
  51. package/lib/shared/Shared.decl.d.ts +2 -2
  52. package/lib/shared/Shared.decl.d.ts.map +1 -1
  53. package/lib/shared/Shared.decl.js +1 -1
  54. package/lib/shared/Utils.d.ts +1 -1
  55. package/lib/shared/Utils.js +1 -1
  56. package/lib/shared/index.d.ts +1 -1
  57. package/lib/shared/index.js +1 -1
  58. package/lib/transporters/Transporter.decl.d.ts +1 -1
  59. package/lib/transporters/Transporter.decl.js +1 -1
  60. package/lib/transporters/http-listener/AbstractHttpListener.d.ts +2 -2
  61. package/lib/transporters/http-listener/AbstractHttpListener.d.ts.map +1 -1
  62. package/lib/transporters/http-listener/AbstractHttpListener.js +10 -6
  63. package/lib/transporters/http-listener/AbstractHttpListener.js.map +1 -1
  64. package/lib/transporters/http-listener/Http.Decl.d.ts +1 -5
  65. package/lib/transporters/http-listener/Http.Decl.d.ts.map +1 -1
  66. package/lib/transporters/http-listener/Http.Decl.js +2 -21
  67. package/lib/transporters/http-listener/Http.Decl.js.map +1 -1
  68. package/lib/transporters/http-listener/HttpListener.d.ts +1 -1
  69. package/lib/transporters/http-listener/HttpListener.d.ts.map +1 -1
  70. package/lib/transporters/http-listener/HttpListener.js +4 -2
  71. package/lib/transporters/http-listener/HttpListener.js.map +1 -1
  72. package/lib/transporters/http-listener/HttpUnixSocketListener.d.ts +1 -1
  73. package/lib/transporters/http-listener/HttpUnixSocketListener.d.ts.map +1 -1
  74. package/lib/transporters/http-listener/HttpUnixSocketListener.js +4 -2
  75. package/lib/transporters/http-listener/HttpUnixSocketListener.js.map +1 -1
  76. package/lib/transporters/http-listener/HttpsListener.d.ts +1 -1
  77. package/lib/transporters/http-listener/HttpsListener.d.ts.map +1 -1
  78. package/lib/transporters/http-listener/HttpsListener.js +6 -4
  79. package/lib/transporters/http-listener/HttpsListener.js.map +1 -1
  80. package/lib/transporters/http-listener/index.d.ts +1 -1
  81. package/lib/transporters/http-listener/index.js +1 -1
  82. package/lib/transporters/index.d.ts +1 -1
  83. package/lib/transporters/index.js +1 -1
  84. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.d.ts +12 -2
  85. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.d.ts.map +1 -1
  86. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.js +11 -1
  87. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.js.map +1 -1
  88. package/lib/transporters/legacy-http/LegacyHttp.Server.d.ts +29 -1
  89. package/lib/transporters/legacy-http/LegacyHttp.Server.d.ts.map +1 -1
  90. package/lib/transporters/legacy-http/LegacyHttp.Server.js +35 -10
  91. package/lib/transporters/legacy-http/LegacyHttp.Server.js.map +1 -1
  92. package/lib/transporters/legacy-http/LegacyHttp.Transporter.d.ts +1 -1
  93. package/lib/transporters/legacy-http/LegacyHttp.Transporter.js +1 -1
  94. package/lib/transporters/legacy-http/index.d.ts +1 -1
  95. package/lib/transporters/legacy-http/index.js +1 -1
  96. package/lib/transporters/lwdfx/LwDFX.Tcp.Client.d.ts +1 -1
  97. package/lib/transporters/lwdfx/LwDFX.Tcp.Client.js +1 -1
  98. package/lib/transporters/lwdfx/LwDFX.Tcp.Server.d.ts +1 -1
  99. package/lib/transporters/lwdfx/LwDFX.Tcp.Server.js +1 -1
  100. package/lib/transporters/lwdfx/LwDFX.Tls.Client.d.ts +1 -1
  101. package/lib/transporters/lwdfx/LwDFX.Tls.Client.js +1 -1
  102. package/lib/transporters/lwdfx/LwDFX.Tls.Server.d.ts +1 -1
  103. package/lib/transporters/lwdfx/LwDFX.Tls.Server.js +1 -1
  104. package/lib/transporters/lwdfx/LwDFX.Transporter.d.ts +1 -1
  105. package/lib/transporters/lwdfx/LwDFX.Transporter.js +1 -1
  106. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.d.ts +1 -1
  107. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.js +1 -1
  108. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.d.ts +1 -1
  109. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.js +1 -1
  110. package/lib/transporters/lwdfx/LwDFX.decl.d.ts +1 -1
  111. package/lib/transporters/lwdfx/LwDFX.decl.js +1 -1
  112. package/lib/transporters/lwdfx/index.d.ts +1 -1
  113. package/lib/transporters/lwdfx/index.js +1 -1
  114. package/lib/transporters/memory/Memory.Impl.d.ts +1 -1
  115. package/lib/transporters/memory/Memory.Impl.js +1 -1
  116. package/lib/transporters/memory/index.d.ts +1 -1
  117. package/lib/transporters/memory/index.js +1 -1
  118. package/lib/transporters/websocket/WebSocket.Client.d.ts +18 -3
  119. package/lib/transporters/websocket/WebSocket.Client.d.ts.map +1 -1
  120. package/lib/transporters/websocket/WebSocket.Client.js +21 -1
  121. package/lib/transporters/websocket/WebSocket.Client.js.map +1 -1
  122. package/lib/transporters/websocket/WebSocket.Server.d.ts +24 -2
  123. package/lib/transporters/websocket/WebSocket.Server.d.ts.map +1 -1
  124. package/lib/transporters/websocket/WebSocket.Server.js +29 -10
  125. package/lib/transporters/websocket/WebSocket.Server.js.map +1 -1
  126. package/lib/transporters/websocket/WebSocket.Transporter.d.ts +1 -1
  127. package/lib/transporters/websocket/WebSocket.Transporter.js +1 -1
  128. package/lib/transporters/websocket/WebSocket.decl.d.ts +1 -1
  129. package/lib/transporters/websocket/WebSocket.decl.js +1 -1
  130. package/lib/transporters/websocket/index.d.ts +1 -1
  131. package/lib/transporters/websocket/index.js +1 -1
  132. package/lib/transporters/worker-thread/WorkerThread.Client.d.ts +1 -1
  133. package/lib/transporters/worker-thread/WorkerThread.Client.js +1 -1
  134. package/lib/transporters/worker-thread/WorkerThread.Constants.d.ts +1 -1
  135. package/lib/transporters/worker-thread/WorkerThread.Constants.js +1 -1
  136. package/lib/transporters/worker-thread/WorkerThread.Errors.d.ts +1 -1
  137. package/lib/transporters/worker-thread/WorkerThread.Errors.d.ts.map +1 -1
  138. package/lib/transporters/worker-thread/WorkerThread.Errors.js +1 -1
  139. package/lib/transporters/worker-thread/WorkerThread.Server.d.ts +1 -1
  140. package/lib/transporters/worker-thread/WorkerThread.Server.js +1 -1
  141. package/lib/transporters/worker-thread/WorkerThread.Transporter.d.ts +1 -1
  142. package/lib/transporters/worker-thread/WorkerThread.Transporter.js +1 -1
  143. package/lib/transporters/worker-thread/index.d.ts +1 -1
  144. package/lib/transporters/worker-thread/index.js +1 -1
  145. package/package.json +5 -5
  146. package/src/lib/client/Client.decl.ts +1 -1
  147. package/src/lib/client/JsonApiClient.impl.ts +1 -1
  148. package/src/lib/client/index.ts +1 -1
  149. package/src/lib/index.ts +1 -1
  150. package/src/lib/server/LegacyServerChannel.impl.ts +1 -1
  151. package/src/lib/server/Server.decl.ts +1 -1
  152. package/src/lib/server/Server.impl.ts +1 -1
  153. package/src/lib/server/ServerChannel.ts +1 -1
  154. package/src/lib/server/SimpleJsonApiRouter.ts +1 -1
  155. package/src/lib/server/index.ts +1 -1
  156. package/src/lib/shared/BinaryStream.ts +1 -1
  157. package/src/lib/shared/BinaryStreamManager.ts +1 -1
  158. package/src/lib/shared/Channel.impl.ts +1 -1
  159. package/src/lib/shared/Constants.ts +1 -1
  160. package/src/lib/shared/Encodings/index.ts +1 -1
  161. package/src/lib/shared/Encodings/v1/EncoderV1.ts +1 -1
  162. package/src/lib/shared/Encodings/v1/Protocol.v1.decls.ts +1 -1
  163. package/src/lib/shared/Encodings/v1/index.ts +1 -1
  164. package/src/lib/shared/Encodings/v2/Constants.v2.ts +1 -1
  165. package/src/lib/shared/Encodings/v2/DecoderV2.ts +1 -1
  166. package/src/lib/shared/Encodings/v2/EncoderV2.ts +1 -1
  167. package/src/lib/shared/Encodings/v2/Encoding.v2.decl.ts +1 -1
  168. package/src/lib/shared/Encodings/v2/index.ts +1 -1
  169. package/src/lib/shared/Errors.ts +1 -1
  170. package/src/lib/shared/Shared.decl.ts +3 -3
  171. package/src/lib/shared/Utils.ts +1 -1
  172. package/src/lib/shared/index.ts +1 -1
  173. package/src/lib/transporters/Transporter.decl.ts +1 -1
  174. package/src/lib/transporters/http-listener/AbstractHttpListener.ts +14 -6
  175. package/src/lib/transporters/http-listener/Http.Decl.ts +1 -26
  176. package/src/lib/transporters/http-listener/HttpListener.ts +10 -2
  177. package/src/lib/transporters/http-listener/HttpUnixSocketListener.ts +10 -2
  178. package/src/lib/transporters/http-listener/HttpsListener.ts +12 -4
  179. package/src/lib/transporters/http-listener/index.ts +1 -1
  180. package/src/lib/transporters/index.ts +1 -1
  181. package/src/lib/transporters/legacy-http/LegacyHttp.Client.Native.ts +30 -3
  182. package/src/lib/transporters/legacy-http/LegacyHttp.Server.ts +57 -9
  183. package/src/lib/transporters/legacy-http/LegacyHttp.Transporter.ts +1 -1
  184. package/src/lib/transporters/legacy-http/index.ts +1 -1
  185. package/src/lib/transporters/lwdfx/LwDFX.Tcp.Client.ts +1 -1
  186. package/src/lib/transporters/lwdfx/LwDFX.Tcp.Server.ts +1 -1
  187. package/src/lib/transporters/lwdfx/LwDFX.Tls.Client.ts +1 -1
  188. package/src/lib/transporters/lwdfx/LwDFX.Tls.Server.ts +1 -1
  189. package/src/lib/transporters/lwdfx/LwDFX.Transporter.ts +1 -1
  190. package/src/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.ts +1 -1
  191. package/src/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.ts +1 -1
  192. package/src/lib/transporters/lwdfx/LwDFX.decl.ts +1 -1
  193. package/src/lib/transporters/lwdfx/index.ts +1 -1
  194. package/src/lib/transporters/memory/Memory.Impl.ts +1 -1
  195. package/src/lib/transporters/memory/index.ts +1 -1
  196. package/src/lib/transporters/websocket/WebSocket.Client.ts +52 -7
  197. package/src/lib/transporters/websocket/WebSocket.Server.ts +55 -9
  198. package/src/lib/transporters/websocket/WebSocket.Transporter.ts +1 -1
  199. package/src/lib/transporters/websocket/WebSocket.decl.ts +1 -1
  200. package/src/lib/transporters/websocket/index.ts +1 -1
  201. package/src/lib/transporters/worker-thread/WorkerThread.Client.ts +1 -1
  202. package/src/lib/transporters/worker-thread/WorkerThread.Constants.ts +1 -1
  203. package/src/lib/transporters/worker-thread/WorkerThread.Errors.ts +1 -1
  204. package/src/lib/transporters/worker-thread/WorkerThread.Server.ts +1 -1
  205. package/src/lib/transporters/worker-thread/WorkerThread.Transporter.ts +1 -1
  206. package/src/lib/transporters/worker-thread/index.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -15,13 +15,28 @@
15
15
  */
16
16
 
17
17
  import * as LibWS from '@litert/websocket';
18
+ import type * as NodeHttp from 'node:http';
18
19
  import * as dWS from './WebSocket.decl';
19
20
  import type * as dT from '../Transporter.decl';
20
21
  import { WebSocketTransporter } from './WebSocket.Transporter';
21
22
 
22
- class WsConnector implements dT.IConnector {
23
+ class WsConnector implements IWsConnector {
23
24
 
24
- public constructor(private readonly _opts: LibWS.IWsConnectOptions) {}
25
+ public constructor(private readonly _opts: LibWS.IWsConnectOptions) {
26
+ this._opts.headers ??= {};
27
+ }
28
+
29
+ public setHeaders(newHeaders: NodeHttp.OutgoingHttpHeaders, append: boolean = true): void {
30
+
31
+ if (append) {
32
+
33
+ Object.assign(this._opts.headers!, newHeaders);
34
+ }
35
+ else {
36
+
37
+ this._opts.headers = newHeaders;
38
+ }
39
+ }
25
40
 
26
41
  public async connect(): Promise<dT.ITransporter> {
27
42
 
@@ -41,9 +56,23 @@ class WsConnector implements dT.IConnector {
41
56
  }
42
57
  }
43
58
 
44
- class WssConnector implements dT.IConnector {
59
+ class WssConnector implements IWsConnector {
60
+
61
+ public constructor(private readonly _opts: LibWS.IWssConnectOptions) {
62
+ this._opts.headers ??= {};
63
+ }
64
+
65
+ public setHeaders(newHeaders: NodeHttp.OutgoingHttpHeaders, append: boolean = true): void {
45
66
 
46
- public constructor(private readonly _opts: LibWS.IWssConnectOptions) {}
67
+ if (append) {
68
+
69
+ Object.assign(this._opts.headers!, newHeaders);
70
+ }
71
+ else {
72
+
73
+ this._opts.headers = newHeaders;
74
+ }
75
+ }
47
76
 
48
77
  public async connect(): Promise<dT.ITransporter> {
49
78
 
@@ -63,13 +92,29 @@ class WssConnector implements dT.IConnector {
63
92
  }
64
93
  }
65
94
 
66
- export function createWsConnector(opts: LibWS.IWsConnectOptions): dT.IConnector {
95
+ export interface IWsConnector extends dT.IConnector {
96
+
97
+ /**
98
+ * Setup the custom headers for websocket negotiation on each connection.
99
+ *
100
+ * **WARNING:**
101
+ * **In browser environment, the Websocket class cannot send custom headers.**
102
+ * **Considering the compatibility, custom headers in Websocket protocol are not recommended to use.**
103
+ * ***Don't use this feature unless you don't care about the compatibility in browser environment.***
104
+ *
105
+ * @param newHeaders The new headers to set.
106
+ * @param append Whether to append the new headers to existing headers, or replace all headers. [Default: true]
107
+ */
108
+ setHeaders(newHeaders: NodeHttp.OutgoingHttpHeaders, append?: boolean): void;
109
+ }
110
+
111
+ export function createWsConnector(opts: LibWS.IWsConnectOptions): IWsConnector {
67
112
 
68
113
  opts.frameReceiveMode = LibWS.EFrameReceiveMode.LITE;
69
114
  return new WsConnector(opts);
70
115
  }
71
116
 
72
- export function createWssConnector(opts: LibWS.IWssConnectOptions): dT.IConnector {
117
+ export function createWssConnector(opts: LibWS.IWssConnectOptions): IWsConnector {
73
118
 
74
119
  opts.frameReceiveMode = LibWS.EFrameReceiveMode.LITE;
75
120
  return new WssConnector(opts);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -15,27 +15,47 @@
15
15
  */
16
16
 
17
17
  import * as LibWS from '@litert/websocket';
18
+ import type * as NodeHttp from 'node:http';
18
19
  import * as dWS from './WebSocket.decl';
19
20
  import type * as Listener from '../http-listener';
20
21
  import type * as dT from '../Transporter.decl';
21
22
  import { EventEmitter } from 'node:events';
22
23
  import { WebSocketTransporter } from './WebSocket.Transporter';
23
24
 
25
+ export interface IRegisterListenerOptions {
26
+
27
+ onErrorCallback: (e: Error) => void;
28
+
29
+ onUpgradeCallback: (req: NodeHttp.IncomingMessage, socket: NodeJS.Socket, head: Buffer) => void;
30
+ }
31
+
32
+ export interface IRegisterListenerResult {
33
+
34
+ stop?: () => void | Promise<void>;
35
+
36
+ start?: () => void | Promise<void>;
37
+
38
+ readonly running: boolean;
39
+ }
40
+
24
41
  class WebSocketGateway extends EventEmitter implements dT.IGateway {
25
42
 
26
43
  private readonly _wsServer: LibWS.IServer;
27
44
 
45
+ private readonly _listener: IRegisterListenerResult;
46
+
28
47
  public constructor(
29
- private readonly _listener: Listener.IHttpListener,
48
+ registerListener: (opts: IRegisterListenerOptions) => IRegisterListenerResult,
30
49
  private readonly _server: dT.IServer,
31
50
  timeout?: number,
32
51
  ) {
33
52
 
34
53
  super();
35
54
 
36
- this._listener
37
- .on('error', (e) => this.emit('error', e))
38
- .setUpgradeProcessor(this._onUpgrade);
55
+ this._listener = registerListener({
56
+ 'onErrorCallback': (e) => this.emit('error', e),
57
+ 'onUpgradeCallback': this._onUpgrade,
58
+ });
39
59
 
40
60
  this._wsServer = LibWS.createServer({
41
61
  frameReceiveMode: LibWS.EFrameReceiveMode.LITE,
@@ -91,7 +111,7 @@ class WebSocketGateway extends EventEmitter implements dT.IGateway {
91
111
  return;
92
112
  }
93
113
 
94
- await this._listener.start();
114
+ await this._listener.start?.();
95
115
  }
96
116
 
97
117
  public async stop(): Promise<void> {
@@ -101,7 +121,7 @@ class WebSocketGateway extends EventEmitter implements dT.IGateway {
101
121
  return;
102
122
  }
103
123
 
104
- await this._listener.stop();
124
+ await this._listener.stop?.();
105
125
  }
106
126
  }
107
127
 
@@ -118,7 +138,9 @@ export interface IWebSocketGatewayOptions {
118
138
  }
119
139
 
120
140
  /**
121
- * Create a WebSocket gateway.
141
+ * Create a WebSocket gateway, binding to a simple built-in HTTP(S) listener.
142
+ *
143
+ * > When using built-in HTTP server, the api will ignore other headers, path and query string in the URL.
122
144
  *
123
145
  * @param listener The HTTP(S) listener object.
124
146
  * @param server The televoke server object.
@@ -129,5 +151,29 @@ export function createWebsocketGateway(
129
151
  options: IWebSocketGatewayOptions = {}
130
152
  ): dT.IGateway {
131
153
 
132
- return new WebSocketGateway(listener, server, options.timeout);
154
+ return new WebSocketGateway((o) => {
155
+
156
+ listener.on('error', o.onErrorCallback);
157
+ listener.setUpgradeProcessor(o.onUpgradeCallback);
158
+
159
+ return listener;
160
+
161
+ }, server, options.timeout);
162
+ }
163
+
164
+ /**
165
+ * Create a WebSocket gateway, binding to a custom HTTP server.
166
+ *
167
+ * > When using a custom HTTP server, it's able to preprocess the request before passing to the server, like
168
+ * > authentication, rate limiting, custom routing, etc.
169
+ *
170
+ * @param registerListener The function to register the listener to the custom HTTP server.
171
+ * @param server The server to process the requests.
172
+ */
173
+ export function createCustomWebsocketGateway(
174
+ registerListener: (opts: IRegisterListenerOptions) => IRegisterListenerResult,
175
+ server: dT.IServer
176
+ ): dT.IGateway {
177
+
178
+ return new WebSocketGateway(registerListener, server);
133
179
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.