@fluojs/websockets 1.0.0-beta.4 → 1.0.0-beta.5
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.
- package/README.ko.md +11 -11
- package/README.md +11 -11
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +2 -2
- package/package.json +8 -8
package/README.ko.md
CHANGED
|
@@ -65,8 +65,8 @@ class MetricsGateway {
|
|
|
65
65
|
}
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
### Server-Backed
|
|
69
|
-
Node
|
|
68
|
+
### Server-Backed Node adapter
|
|
69
|
+
Server-backed Node adapter(Node.js, Express, Fastify)에서는 전용 listener port를 사용할 수 있습니다. Fetch-style runtime(`@fluojs/websockets/bun`, `@fluojs/websockets/deno`, `@fluojs/websockets/cloudflare-workers`)은 `serverBacked`를 거부합니다.
|
|
70
70
|
|
|
71
71
|
```typescript
|
|
72
72
|
@WebSocketGateway({
|
|
@@ -101,7 +101,7 @@ WebSocketModule.forRoot({
|
|
|
101
101
|
});
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
옵션을 생략하면 `@fluojs/websockets`는 동시 연결
|
|
104
|
+
옵션을 생략하면 `@fluojs/websockets`는 동시 연결 수, inbound payload 크기, pending message buffer, shutdown cleanup에 bounded default를 적용합니다. 기본값은 `maxConnections: 1000`, `maxPayloadBytes: 1 MiB`, `buffer.maxPendingMessagesPerSocket: 256`, `shutdown.timeoutMs: 5000`, Node heartbeat interval `30s`, Node backpressure `maxBufferedAmountBytes: 1 MiB`와 drop behavior입니다. 또한 server-backed Node listener는 `heartbeat.enabled`를 명시적으로 `false`로 두지 않는 한 heartbeat timer를 활성화합니다. 공식 fetch-style runtime module(`@fluojs/websockets/bun`, `@fluojs/websockets/deno`, `@fluojs/websockets/cloudflare-workers`)은 애플리케이션 shutdown 시 추적 중인 websocket 클라이언트를 닫고 `shutdown.timeoutMs` 범위 안에서 `@OnDisconnect()` cleanup이 마무리될 수 있도록 bounded 기회를 제공합니다.
|
|
105
105
|
|
|
106
106
|
## 공개 API 개요
|
|
107
107
|
|
|
@@ -110,20 +110,20 @@ WebSocketModule.forRoot({
|
|
|
110
110
|
- `@OnMessage(event?)`: 인바운드 메시지 핸들러를 위한 데코레이터입니다.
|
|
111
111
|
- `@OnDisconnect()`: 연결 해제 핸들러를 위한 데코레이터입니다.
|
|
112
112
|
- `WebSocketModule`: WebSocket 통합을 위한 루트 모듈입니다.
|
|
113
|
-
- `WebSocketModule.forRoot({ upgrade, limits, heartbeat,
|
|
113
|
+
- `WebSocketModule.forRoot({ upgrade, limits, backpressure, buffer, heartbeat, shutdown })`: pre-upgrade guard와 bounded runtime default를 구성합니다.
|
|
114
114
|
- `WebSocketGatewayLifecycleService`: 기본 Node.js 기반 lifecycle service token을 위한 루트 alias입니다.
|
|
115
|
-
-
|
|
115
|
+
- Metadata helper와 symbol: `defineWebSocketGatewayMetadata`, `getWebSocketGatewayMetadata`, `defineWebSocketHandlerMetadata`, `getWebSocketHandlerMetadata`, `getWebSocketHandlerMetadataEntries`, `webSocketGatewayMetadataSymbol`, `webSocketHandlerMetadataSymbol`.
|
|
116
116
|
|
|
117
117
|
## 런타임별 서브패스
|
|
118
118
|
|
|
119
119
|
기본 루트 Node.js alias 대신 런타임을 명시적으로 고정하고 싶다면 런타임별 서브패스를 사용하세요. 각 서브패스는 해당 `*WebSocketModule.forRoot(...)` 진입점과 일치하는 런타임 lifecycle service export를 제공합니다.
|
|
120
120
|
|
|
121
|
-
| 런타임 | 서브패스 | 모듈 |
|
|
122
|
-
| --- | --- | --- |
|
|
123
|
-
| Node.js | `@fluojs/websockets/node` | `NodeWebSocketModule` |
|
|
124
|
-
| Bun | `@fluojs/websockets/bun` | `BunWebSocketModule` |
|
|
125
|
-
| Deno | `@fluojs/websockets/deno` | `DenoWebSocketModule` |
|
|
126
|
-
| Workers | `@fluojs/websockets/cloudflare-workers` | `CloudflareWorkersWebSocketModule` |
|
|
121
|
+
| 런타임 | 서브패스 | 모듈 | Lifecycle service |
|
|
122
|
+
| --- | --- | --- | --- |
|
|
123
|
+
| Node.js | `@fluojs/websockets/node` | `NodeWebSocketModule` | `NodeWebSocketGatewayLifecycleService` |
|
|
124
|
+
| Bun | `@fluojs/websockets/bun` | `BunWebSocketModule` | `BunWebSocketGatewayLifecycleService` |
|
|
125
|
+
| Deno | `@fluojs/websockets/deno` | `DenoWebSocketModule` | `DenoWebSocketGatewayLifecycleService` |
|
|
126
|
+
| Workers | `@fluojs/websockets/cloudflare-workers` | `CloudflareWorkersWebSocketModule` | `CloudflareWorkersWebSocketGatewayLifecycleService` |
|
|
127
127
|
|
|
128
128
|
## 예제 소스
|
|
129
129
|
|
package/README.md
CHANGED
|
@@ -65,8 +65,8 @@ class MetricsGateway {
|
|
|
65
65
|
}
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
### Server-Backed
|
|
69
|
-
For
|
|
68
|
+
### Server-Backed Node Adapters
|
|
69
|
+
For server-backed Node adapters (Node.js, Express, Fastify), you can opt into a dedicated listener port. Fetch-style runtimes (`@fluojs/websockets/bun`, `@fluojs/websockets/deno`, and `@fluojs/websockets/cloudflare-workers`) reject `serverBacked`.
|
|
70
70
|
|
|
71
71
|
```typescript
|
|
72
72
|
@WebSocketGateway({
|
|
@@ -101,7 +101,7 @@ WebSocketModule.forRoot({
|
|
|
101
101
|
});
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
When omitted, `@fluojs/websockets`
|
|
104
|
+
When omitted, `@fluojs/websockets` applies bounded defaults for concurrent connections, inbound payload size, pending message buffers, and shutdown cleanup. Default settings are `maxConnections: 1000`, `maxPayloadBytes: 1 MiB`, `buffer.maxPendingMessagesPerSocket: 256`, `shutdown.timeoutMs: 5000`, Node heartbeat interval `30s`, and Node backpressure `maxBufferedAmountBytes: 1 MiB` with drop behavior. Server-backed Node listeners enable heartbeat timers unless you explicitly set `heartbeat.enabled` to `false`. The official fetch-style runtime modules (`@fluojs/websockets/bun`, `@fluojs/websockets/deno`, and `@fluojs/websockets/cloudflare-workers`) close tracked websocket clients during application shutdown and give `@OnDisconnect()` cleanup a bounded chance to finish within `shutdown.timeoutMs`.
|
|
105
105
|
|
|
106
106
|
## Public API Overview
|
|
107
107
|
|
|
@@ -110,20 +110,20 @@ When omitted, `@fluojs/websockets` now applies bounded defaults for concurrent c
|
|
|
110
110
|
- `@OnMessage(event?)`: Decorator for inbound message handlers.
|
|
111
111
|
- `@OnDisconnect()`: Decorator for disconnection handlers.
|
|
112
112
|
- `WebSocketModule`: Root module for WebSocket integration.
|
|
113
|
-
- `WebSocketModule.forRoot({ upgrade, limits, heartbeat,
|
|
113
|
+
- `WebSocketModule.forRoot({ upgrade, limits, backpressure, buffer, heartbeat, shutdown })`: Configures pre-upgrade guards and bounded runtime defaults.
|
|
114
114
|
- `WebSocketGatewayLifecycleService`: Root alias for the default Node.js-backed lifecycle service token.
|
|
115
|
-
-
|
|
115
|
+
- Metadata helpers and symbols: `defineWebSocketGatewayMetadata`, `getWebSocketGatewayMetadata`, `defineWebSocketHandlerMetadata`, `getWebSocketHandlerMetadata`, `getWebSocketHandlerMetadataEntries`, `webSocketGatewayMetadataSymbol`, `webSocketHandlerMetadataSymbol`.
|
|
116
116
|
|
|
117
117
|
## Runtime-Specific Subpaths
|
|
118
118
|
|
|
119
119
|
Use the runtime subpaths when you want an explicit runtime binding instead of the default root Node.js alias. Each subpath exposes its `*WebSocketModule.forRoot(...)` entrypoint plus the matching runtime lifecycle service export.
|
|
120
120
|
|
|
121
|
-
| Runtime | Subpath | Module |
|
|
122
|
-
| --- | --- | --- |
|
|
123
|
-
| Node.js | `@fluojs/websockets/node` | `NodeWebSocketModule` |
|
|
124
|
-
| Bun | `@fluojs/websockets/bun` | `BunWebSocketModule` |
|
|
125
|
-
| Deno | `@fluojs/websockets/deno` | `DenoWebSocketModule` |
|
|
126
|
-
| Workers | `@fluojs/websockets/cloudflare-workers` | `CloudflareWorkersWebSocketModule` |
|
|
121
|
+
| Runtime | Subpath | Module | Lifecycle service |
|
|
122
|
+
| --- | --- | --- | --- |
|
|
123
|
+
| Node.js | `@fluojs/websockets/node` | `NodeWebSocketModule` | `NodeWebSocketGatewayLifecycleService` |
|
|
124
|
+
| Bun | `@fluojs/websockets/bun` | `BunWebSocketModule` | `BunWebSocketGatewayLifecycleService` |
|
|
125
|
+
| Deno | `@fluojs/websockets/deno` | `DenoWebSocketModule` | `DenoWebSocketGatewayLifecycleService` |
|
|
126
|
+
| Workers | `@fluojs/websockets/cloudflare-workers` | `CloudflareWorkersWebSocketModule` | `CloudflareWorkersWebSocketGatewayLifecycleService` |
|
|
127
127
|
|
|
128
128
|
## Example Sources
|
|
129
129
|
|
package/dist/decorators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAmC,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG9G,KAAK,wBAAwB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAC1F,KAAK,yBAAyB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,KAAK,IAAI,CAAC;AACjG,KAAK,kBAAkB,GAAG,wBAAwB,CAAC;AACnD,KAAK,mBAAmB,GAAG,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAmC,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG9G,KAAK,wBAAwB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAC1F,KAAK,yBAAyB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,KAAK,IAAI,CAAC;AACjG,KAAK,kBAAkB,GAAG,wBAAwB,CAAC;AACnD,KAAK,mBAAmB,GAAG,yBAAyB,CAAC;AA8DrD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,uBAA4B,GACpC,kBAAkB,CAMpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CACvB,OAAO,SAAS,iBAAiB,GAAG,iBAAiB,EACrD,CAAC,SAAS,MAAM,OAAO,GAAG,MAAM,OAAO,EACvC,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,mBAAmB,CAKzC;AAED;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,mBAAmB,CAI/C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,mBAAmB,CAIlD"}
|
package/dist/decorators.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ensureMetadataSymbol } from '@fluojs/core/internal';
|
|
2
2
|
import { webSocketGatewayMetadataSymbol, webSocketHandlerMetadataSymbol } from './metadata.js';
|
|
3
|
+
ensureMetadataSymbol();
|
|
3
4
|
function getStandardMetadataBag(metadata) {
|
|
4
|
-
void metadataSymbol;
|
|
5
5
|
return metadata;
|
|
6
6
|
}
|
|
7
7
|
function normalizeGatewayPath(path) {
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"realtime",
|
|
10
10
|
"upgrade"
|
|
11
11
|
],
|
|
12
|
-
"version": "1.0.0-beta.
|
|
12
|
+
"version": "1.0.0-beta.5",
|
|
13
13
|
"private": false,
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"repository": {
|
|
@@ -69,17 +69,17 @@
|
|
|
69
69
|
],
|
|
70
70
|
"dependencies": {
|
|
71
71
|
"ws": "^8.18.3",
|
|
72
|
-
"@fluojs/core": "^1.0.0-beta.
|
|
73
|
-
"@fluojs/di": "^1.0.0-beta.
|
|
74
|
-
"@fluojs/http": "^1.0.0-beta.
|
|
75
|
-
"@fluojs/runtime": "^1.0.0-beta.
|
|
72
|
+
"@fluojs/core": "^1.0.0-beta.4",
|
|
73
|
+
"@fluojs/di": "^1.0.0-beta.6",
|
|
74
|
+
"@fluojs/http": "^1.0.0-beta.10",
|
|
75
|
+
"@fluojs/runtime": "^1.0.0-beta.11"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
78
|
"@types/ws": "^8.18.1",
|
|
79
79
|
"vitest": "^3.2.4",
|
|
80
|
-
"@fluojs/platform-bun": "^1.0.0-beta.
|
|
81
|
-
"@fluojs/platform-express": "^1.0.0-beta.
|
|
82
|
-
"@fluojs/platform-fastify": "^1.0.0-beta.
|
|
80
|
+
"@fluojs/platform-bun": "^1.0.0-beta.6",
|
|
81
|
+
"@fluojs/platform-express": "^1.0.0-beta.6",
|
|
82
|
+
"@fluojs/platform-fastify": "^1.0.0-beta.8"
|
|
83
83
|
},
|
|
84
84
|
"scripts": {
|
|
85
85
|
"prebuild": "node ../../tooling/scripts/clean-dist.mjs",
|