UNPKG

2.61 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.SocketServerProvider = void 0;
4const tslib_1 = require("tslib");
5const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
6const server_and_event_streams_factory_1 = require("./factories/server-and-event-streams-factory");
7class SocketServerProvider {
8 constructor(socketsContainer, applicationConfig) {
9 this.socketsContainer = socketsContainer;
10 this.applicationConfig = applicationConfig;
11 }
12 scanForSocketServer(options, port) {
13 const serverAndStreamsHost = this.socketsContainer.getOneByConfig({
14 port,
15 path: options.path,
16 });
17 if (serverAndStreamsHost && options.namespace) {
18 return this.decorateWithNamespace(options, port, serverAndStreamsHost.server);
19 }
20 return serverAndStreamsHost
21 ? serverAndStreamsHost
22 : this.createSocketServer(options, port);
23 }
24 createSocketServer(options, port) {
25 const adapter = this.applicationConfig.getIoAdapter();
26 const _a = options, { namespace, server } = _a, partialOptions = tslib_1.__rest(_a, ["namespace", "server"]);
27 const ioServer = adapter.create(port, partialOptions);
28 const serverAndEventStreamsHost = server_and_event_streams_factory_1.ServerAndEventStreamsFactory.create(ioServer);
29 this.socketsContainer.addOne({ port, path: options.path }, serverAndEventStreamsHost);
30 if (!namespace) {
31 return serverAndEventStreamsHost;
32 }
33 return this.decorateWithNamespace(options, port, ioServer);
34 }
35 decorateWithNamespace(options, port, targetServer) {
36 const namespaceServer = this.getServerOfNamespace(options, port, targetServer);
37 const serverAndEventStreamsHost = server_and_event_streams_factory_1.ServerAndEventStreamsFactory.create(namespaceServer);
38 this.socketsContainer.addOne({ port, path: options.path, namespace: options.namespace }, serverAndEventStreamsHost);
39 return serverAndEventStreamsHost;
40 }
41 getServerOfNamespace(options, port, server) {
42 const adapter = this.applicationConfig.getIoAdapter();
43 return adapter.create(port, Object.assign(Object.assign({}, options), { namespace: this.validateNamespace(options.namespace || ''), server }));
44 }
45 validateNamespace(namespace) {
46 if (!(0, shared_utils_1.isString)(namespace)) {
47 return namespace;
48 }
49 return (0, shared_utils_1.addLeadingSlash)(namespace);
50 }
51}
52exports.SocketServerProvider = SocketServerProvider;