topsyde-utils 1.0.68 → 1.0.70
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/dist/server/bun/websocket/Channel.d.ts +1 -1
- package/dist/server/bun/websocket/Channel.js +3 -1
- package/dist/server/bun/websocket/Channel.js.map +1 -1
- package/dist/server/bun/websocket/Websocket.d.ts +9 -3
- package/dist/server/bun/websocket/Websocket.js +35 -15
- package/dist/server/bun/websocket/Websocket.js.map +1 -1
- package/package.json +1 -1
@@ -10,7 +10,7 @@ export default class Channel {
|
|
10
10
|
constructor(id: string, name: string, limit?: number, members?: Map<string, Client>, metadata?: Record<string, string>);
|
11
11
|
addMember(entity: I_WebsocketEntity): false | Client;
|
12
12
|
removeMember(entity: I_WebsocketEntity): false | Client;
|
13
|
-
broadcast(message: WebsocketStructuredMessage,
|
13
|
+
broadcast(message: WebsocketStructuredMessage, source?: I_WebsocketEntity): void;
|
14
14
|
hasMember(client: I_WebsocketEntity | string): boolean;
|
15
15
|
getMember(client: I_WebsocketEntity | string): Client | undefined;
|
16
16
|
getMembers(): I_WebsocketClient[];
|
@@ -32,7 +32,9 @@ class Channel {
|
|
32
32
|
this.members.delete(entity.id);
|
33
33
|
return client;
|
34
34
|
}
|
35
|
-
broadcast(message,
|
35
|
+
broadcast(message, source) {
|
36
|
+
if (source)
|
37
|
+
message.content.client = source;
|
36
38
|
Websocket_1.default.Broadcast(this.id, message);
|
37
39
|
}
|
38
40
|
hasMember(client) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,4DAAoC;AAGpC,MAAqB,OAAO;IAQ3B,YAAY,EAAU,EAAE,IAAY,EAAE,KAAc,EAAE,OAA6B,EAAE,QAAiC;QAP5G,cAAS,GAAU,IAAI,IAAI,EAAE,CAAC;QAQvC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;IAChC,CAAC;IAEM,SAAS,CAAC,MAAyB;QACzC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE,OAAO,KAAK,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,YAAY,CAAC,MAAyB;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,SAAS,CAAC,OAAmC,EAAE,
|
1
|
+
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":"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"}
|
@@ -1,14 +1,15 @@
|
|
1
1
|
import { Server, ServerWebSocket, WebSocketHandler } from "bun";
|
2
2
|
import Singleton from "../../../singleton";
|
3
|
+
import Channel from "./Channel";
|
3
4
|
import type { I_WebsocketClient, I_WebsocketEntity, I_WebsocketInterface, WebsocketChannel, WebsocketClientData, WebsocketMessage, WebsocketStructuredMessage } from "./websocket.types";
|
4
5
|
export default class Websocket extends Singleton {
|
5
6
|
protected ws_interface?: I_WebsocketInterface | undefined;
|
6
|
-
protected
|
7
|
-
protected
|
7
|
+
protected _channels: WebsocketChannel;
|
8
|
+
protected _clients: Map<string, I_WebsocketClient>;
|
8
9
|
private _server;
|
9
10
|
protected constructor(ws_interface?: I_WebsocketInterface | undefined);
|
11
|
+
private set server(value);
|
10
12
|
get server(): Server;
|
11
|
-
protected set server(value: Server);
|
12
13
|
set(server: Server): void;
|
13
14
|
setup(): WebSocketHandler<WebsocketClientData>;
|
14
15
|
private clientMessageReceived;
|
@@ -22,4 +23,9 @@ export default class Websocket extends Singleton {
|
|
22
23
|
static Join(channel: string, entity: I_WebsocketEntity): void;
|
23
24
|
static Leave(channel: string, entity: I_WebsocketEntity): void;
|
24
25
|
static GetClient(id: string): I_WebsocketClient | undefined;
|
26
|
+
static GetChannel(id: string): Channel | undefined;
|
27
|
+
static GetChannels(): Channel[];
|
28
|
+
static GetClients(): I_WebsocketClient[];
|
29
|
+
static GetClientCount(): number;
|
30
|
+
static GetChannelCount(): number;
|
25
31
|
}
|
@@ -11,12 +11,12 @@ class Websocket extends singleton_1.default {
|
|
11
11
|
constructor(ws_interface) {
|
12
12
|
super();
|
13
13
|
this.ws_interface = ws_interface;
|
14
|
-
this.
|
15
|
-
this.
|
14
|
+
this._channels = new Map();
|
15
|
+
this._clients = new Map();
|
16
16
|
this.clientMessageReceived = (ws, message) => {
|
17
17
|
if (Websocket.Heartbeat(ws, message))
|
18
18
|
return;
|
19
|
-
const setup = this.ws_interface?.setup(this.
|
19
|
+
const setup = this.ws_interface?.setup(this._channels);
|
20
20
|
if (setup && setup.message)
|
21
21
|
return setup.message(ws, message);
|
22
22
|
ws.send("This is the message from the server: " + message);
|
@@ -31,31 +31,31 @@ class Websocket extends singleton_1.default {
|
|
31
31
|
return false;
|
32
32
|
};
|
33
33
|
this.clientConnected = (ws) => {
|
34
|
-
const global = this.
|
34
|
+
const global = this._channels.get("global");
|
35
35
|
if (!global)
|
36
36
|
throw new Error("Global channel not found");
|
37
37
|
const client = global.addMember({ id: ws.data.id, ws: ws, name: ws.data.name });
|
38
38
|
if (!client)
|
39
39
|
throw new Error("Failed to add client to global channel");
|
40
|
-
this.
|
40
|
+
this._clients.set(client.id, client);
|
41
41
|
client.send({ type: "client.connected", content: { client: client.whoami() } });
|
42
42
|
};
|
43
43
|
this.clientDisconnected = (ws) => {
|
44
44
|
utils_1.Lib.Log("WebSocket connection closed");
|
45
|
-
this.
|
45
|
+
this._channels.forEach((channel) => {
|
46
46
|
channel.removeMember({ id: ws.data.id, ws: ws, name: ws.data.name });
|
47
47
|
});
|
48
|
-
this.
|
48
|
+
this._clients.delete(ws.data.id);
|
49
49
|
};
|
50
50
|
const global = new Channel_1.default("global", "Global Channel", 1000);
|
51
|
-
this.
|
52
|
-
}
|
53
|
-
get server() {
|
54
|
-
return this._server;
|
51
|
+
this._channels.set("global", global);
|
55
52
|
}
|
56
53
|
set server(value) {
|
57
54
|
this._server = value;
|
58
55
|
}
|
56
|
+
get server() {
|
57
|
+
return this._server;
|
58
|
+
}
|
59
59
|
set(server) {
|
60
60
|
this.server = server;
|
61
61
|
Console_1.Console.success("Websocket server set");
|
@@ -84,19 +84,39 @@ class Websocket extends singleton_1.default {
|
|
84
84
|
}
|
85
85
|
static BraodcastAll(message) {
|
86
86
|
const ws = this.GetInstance();
|
87
|
-
ws.
|
87
|
+
ws._channels.forEach((channel) => channel.broadcast(message));
|
88
88
|
}
|
89
89
|
static Join(channel, entity) {
|
90
90
|
const ws = this.GetInstance();
|
91
|
-
ws.
|
91
|
+
ws._channels.get(channel)?.addMember(entity);
|
92
92
|
}
|
93
93
|
static Leave(channel, entity) {
|
94
94
|
const ws = this.GetInstance();
|
95
|
-
ws.
|
95
|
+
ws._channels.get(channel)?.removeMember(entity);
|
96
96
|
}
|
97
97
|
static GetClient(id) {
|
98
98
|
const ws = this.GetInstance();
|
99
|
-
return ws.
|
99
|
+
return ws._clients.get(id);
|
100
|
+
}
|
101
|
+
static GetChannel(id) {
|
102
|
+
const ws = this.GetInstance();
|
103
|
+
return ws._channels.get(id);
|
104
|
+
}
|
105
|
+
static GetChannels() {
|
106
|
+
const ws = this.GetInstance();
|
107
|
+
return Array.from(ws._channels.values());
|
108
|
+
}
|
109
|
+
static GetClients() {
|
110
|
+
const ws = this.GetInstance();
|
111
|
+
return Array.from(ws._clients.values());
|
112
|
+
}
|
113
|
+
static GetClientCount() {
|
114
|
+
const ws = this.GetInstance();
|
115
|
+
return ws._clients.size;
|
116
|
+
}
|
117
|
+
static GetChannelCount() {
|
118
|
+
const ws = this.GetInstance();
|
119
|
+
return ws._channels.size;
|
100
120
|
}
|
101
121
|
}
|
102
122
|
exports.default = Websocket;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Websocket.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Websocket.ts"],"names":[],"mappings":";;;;;AACA,mEAA2C;AAC3C,0CAAqC;AACrC,oDAAiD;AACjD,wDAAgC;AAWhC,MAAqB,SAAU,SAAQ,mBAAS;IAK/C,YAAgC,YAAmC;QAClE,KAAK,EAAE,CAAC;QADuB,iBAAY,GAAZ,YAAY,CAAuB;QAJzD,
|
1
|
+
{"version":3,"file":"Websocket.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Websocket.ts"],"names":[],"mappings":"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"}
|