Skip to content

Commit acc78d0

Browse files
authored
Merge pull request #66 from samchon/features/acceptor
`WebAcceptor.upgrade()` for 3rd party libraries.
2 parents 5c5ce71 + acab3e3 commit acc78d0

3 files changed

Lines changed: 26 additions & 33 deletions

File tree

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "tgrid",
3-
"version": "0.10.2",
3+
"version": "0.10.3",
44
"main": "lib/index.js",
55
"typings": "lib/index.d.ts",
66
"exports": {
@@ -29,6 +29,9 @@
2929
"test:node": "node bin/test/node"
3030
},
3131
"dependencies": {
32+
"@types/node": "^20.11.30",
33+
"@types/websocket": "^1.0.10",
34+
"@types/ws": "^7.4.7",
3235
"import2": "^1.0.3",
3336
"tstl": "3.0.0",
3437
"ws": "^7.5.3"
@@ -38,9 +41,7 @@
3841
"@rollup/plugin-typescript": "^11.1.6",
3942
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
4043
"@types/browserify": "^12.0.40",
41-
"@types/node": "^20.11.26",
4244
"@types/puppeteer": "^7.0.4",
43-
"@types/ws": "^7.4.7",
4445
"@typescript-eslint/eslint-plugin": "^5.33.0",
4546
"@typescript-eslint/parser": "^5.33.0",
4647
"browserify": "^17.0.0",

src/protocols/web/WebAcceptor.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type WebSocket from "ws";
44

55
import { Invoke } from "../../components/Invoke";
66
import { AcceptorBase } from "../internal/AcceptorBase";
7+
import { IHeaderWrapper } from "../internal/IHeaderWrapper";
78
import { WebError } from "./WebError";
89
import { IWebCommunicator } from "./internal/IWebCommunicator";
910

@@ -52,15 +53,27 @@ export class WebAcceptor<Header, Provider extends object | null>
5253
/* ----------------------------------------------------------------
5354
CONSTRUCTORS
5455
---------------------------------------------------------------- */
55-
/**
56-
* @internal
57-
*/
58-
public static create<Header, Provider extends object | null>(
56+
public static upgrade<Header, Provider extends object | null>(
5957
request: http.IncomingMessage,
6058
socket: WebSocket,
61-
header: Header,
62-
): WebAcceptor<Header, Provider> {
63-
return new WebAcceptor(request, socket, header);
59+
handler?: (acceptor: WebAcceptor<Header, Provider>) => Promise<any>,
60+
): void {
61+
socket.once("message", async (data: WebSocket.Data) => {
62+
// @todo: custom code is required
63+
if (typeof data !== "string") socket.close();
64+
else
65+
try {
66+
const wrapper: IHeaderWrapper<Header> = JSON.parse(data as string);
67+
const acceptor: WebAcceptor<Header, Provider> = new WebAcceptor(
68+
request,
69+
socket,
70+
wrapper.header,
71+
);
72+
if (handler !== undefined) await handler(acceptor);
73+
} catch (exp) {
74+
socket.close();
75+
}
76+
});
6477
}
6578

6679
/**

src/protocols/web/WebServer.ts

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { DomainError, RuntimeError, is_node } from "tstl";
55
import type WebSocket from "ws";
66

77
import { NodeModule } from "../../utils/internal/NodeModule";
8-
import { IHeaderWrapper } from "../internal/IHeaderWrapper";
98
import { IServer } from "../internal/IServer";
109
import { WebAcceptor } from "./WebAcceptor";
1110

@@ -150,28 +149,8 @@ export class WebServer<Header, Provider extends object | null>
150149
netSocket: net.Socket,
151150
header: Buffer,
152151
) => {
153-
this.protocol_!.handleUpgrade(
154-
request,
155-
netSocket,
156-
header,
157-
(webSocket) => {
158-
webSocket.once("message", async (data: WebSocket.Data) => {
159-
// @todo: custom code is required
160-
if (typeof data !== "string") webSocket.close();
161-
162-
try {
163-
const wrapper: IHeaderWrapper<Header> = JSON.parse(
164-
data as string,
165-
);
166-
const acceptor: WebAcceptor<Header, Provider> =
167-
WebAcceptor.create(request, webSocket, wrapper.header);
168-
169-
await handler(acceptor);
170-
} catch (exp) {
171-
webSocket.close();
172-
}
173-
});
174-
},
152+
this.protocol_!.handleUpgrade(request, netSocket, header, (socket) =>
153+
WebAcceptor.upgrade(request, socket, handler),
175154
);
176155
},
177156
);

0 commit comments

Comments
 (0)