{"_id":"@addapptables/ng-web-socket","_rev":"8-b22122c1d376b4492ac344cf72ccdf00","name":"@addapptables/ng-web-socket","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@addapptables/ng-web-socket","version":"1.0.0","keywords":["angular","socket-io","web-socket","web socket","addapptables","ng-web-socket","signalr","signal-r"],"author":{"name":"Addapptables"},"license":"MIT","_id":"@addapptables/ng-web-socket@1.0.0","maintainers":[{"name":"teogl","email":"teito.lop@gmail.com"},{"name":"sebastian.delaroche","email":"sebastianroche17@gmail.com"},{"name":"addapptable","email":"dev@addapptables.com"}],"homepage":"https://github.com/addapptables/ng-web-socket","bugs":{"url":"https://github.com/addapptables/ng-web-socket/issues"},"dist":{"shasum":"971b90760f2b499c83c021ff50c12eeb12340142","tarball":"https://registry.npmjs.org/@addapptables/ng-web-socket/-/ng-web-socket-1.0.0.tgz","fileCount":51,"integrity":"sha512-XlQYREH02gVfTeKEgzQEq9S2WHdXAw8rl4kJGwbbAtLHjH4b9UZm0nJ/ZGdLhHqIDeXsPzQHsIXaQ2mcI4qhPg==","signatures":[{"sig":"MEUCIQD9A0EClfus4vcP+Uet12eJw/l3ikTxMuEK82pCcQFPtwIgPL6gOwDVEozY/Uk03OhmYfswMRuaiHlOUGSvBmWqh9E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":202621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcsOXXCRA9TVsSAnZWagAAicAP/1AMBXdCEgeM4GkYkUl4\nxBvwoNOEteV7iuwujpziu6t0ZNpATP9rzpUWyd3UQElivf32NmjhTFcESi6U\nPPtIQcAF8S8yl/xLbdf/J7IsjMTojOKGUcd3t2rdpPaxmRFAwb9qzuPOKGNs\n3uVVYsmCn0rXjZSrxV5H12xB4BoFL5OveBiriEUK/Q1wDjoRhN+1+ZaBWNRU\nsYWgx9wS4/u5wZroQ76f44w+PIXNQPk9ZI4aOmvI1aMZeu6hyNI7STwthUvV\nQBBUJQLP5tuj7iDyerTbaw6693ztCsK9FKGt3+G62arUzkZfvdD7leq4+9sc\nVpdPXMt7XWx6a5wgP9O1tzb8jajYlE3PRhfAShkj+c7dvKEHzpTenLc5YPYj\nLYakdL8//QhovToF2Hhw03m6KGG/Q5fhcHmT7b/6xqFPOhdJoSfP1UyXqoS9\naeWUgfdY/Ya9mswAL+iHtwe96u49TPhwRLERLHY05Kd1rGtdDSNu+d2C7ZV7\nrpwtpvRUymRHj2pFUsjSkDtPE+ZC5bYdSZACmmAQlvTSdiMJES8cM58eV01L\nRplpkOjSfM+R1/ms9o1e6LcMZ2ga8eANryaHUrFrDkMd73L8Et8JesSxX65p\n2tz5CJ00r+3W0MbbROgkZyEy6GSrLYv+TSneNfthMF3xC+LV41PI18KbXg6c\nIkng\r\n=KZt9\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/addapptables-ng-web-socket.js","main":"bundles/addapptables-ng-web-socket.umd.js","fesm5":"fesm5/addapptables-ng-web-socket.js","es2015":"fesm2015/addapptables-ng-web-socket.js","module":"fesm5/addapptables-ng-web-socket.js","esm2015":"esm2015/addapptables-ng-web-socket.js","typings":"addapptables-ng-web-socket.d.ts","_npmUser":{"name":"teogl","email":"teito.lop@gmail.com"},"fesm2015":"fesm2015/addapptables-ng-web-socket.js","metadata":"addapptables-ng-web-socket.metadata.json","repository":{"url":"git+https://github.com/addapptables/ng-web-socket.git","type":"git"},"_npmVersion":"5.6.0","description":"Web socket module for Angular","directories":{},"sideEffects":false,"_nodeVersion":"8.11.4","dependencies":{"tslib":"^1.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=7.0.0 < 8.0.0","@angular/common":">=7.0.0 < 8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-web-socket_1.0.0_1555097046815_0.4085638235610416","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@addapptables/ng-web-socket","version":"1.0.1","keywords":["angular","socket-io","web-socket","web socket","addapptables","ng-web-socket","signalr","signal-r"],"author":{"name":"Addapptables"},"license":"MIT","_id":"@addapptables/ng-web-socket@1.0.1","maintainers":[{"name":"addapptable","email":"dev@addapptables.com"},{"name":"sebastian.delaroche","email":"sebastianroche17@gmail.com"},{"name":"teogl","email":"teito.lop@gmail.com"}],"homepage":"https://github.com/addapptables/ng-web-socket","bugs":{"url":"https://github.com/addapptables/ng-web-socket/issues"},"dist":{"shasum":"99aa49b4f5fda6395f4f0df6f4ce6ec8473b1b01","tarball":"https://registry.npmjs.org/@addapptables/ng-web-socket/-/ng-web-socket-1.0.1.tgz","fileCount":48,"integrity":"sha512-dPRj4Uz75HJF5jIB4K6UZxyzDqlFgJNGkJz2wLotaKtnIpS2U2IyU45r8ERjB0r2C4leYjl67LYHIcWhdz6ccQ==","signatures":[{"sig":"MEYCIQCkYB07nq56/Vmnte/C0ZAIA0pt0FTdc7u9WwfUm1Z6CQIhAMK4n6UvWIDP19oC6h/n+3QjvigOuzXD2qgDbOZXRskM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":206823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcsPp4CRA9TVsSAnZWagAAxX8QAKISasWrLjPPGZ8mUOLz\nLGbqOPE8k8/x6oJgXXYDnNqql6CA48kdRcCZfFy6pYb19rQxZGXk+pC3FwZw\neVDos2txZ/0jZqrbTHzPIKCj5xHn8K+JDJQTDfNsoet2fxf3jZDikZOF/tPj\npATySNVoLLC4qcUriP9t0SxG/gUKEp/1z20OnpDo+UT/9sxCp/SCmmzitDs1\n+3QOiso1dJ3eNugAhcc1D+lpnS6PPO4b7hGvm4w+CqudI+TlvVcU6usPTQP6\n0/LHNpzzScPKDvZBC7dloolcGGkfWNPjiwKw6CGTFJfUHCzGCK5IMaIpv1WM\nqRpCsBkM29q3WEH438H3wn8oMHUN8/cjspRn31pu0U6XDMsc2eXOuIcOya+0\nALQketOtkLaxJR1itVnIfDn0vGyIdnoIQ2ctC9+vhWD9QcX3gh+TJtxfXSgq\ntepQF8DClIfXdjlD8MW/DnEDubrKqbBuxaWkVlpnOAp7S1aqRIdlKncg9dff\nCoaOBH95blMdDJ1fFne7uNVmPM0pIFJp54Ib8LQVBPpQJ7p/McaS+K4W0Xbl\nmqsboiLHOQxPB494ybbCGAOO+1fevtQXGMsq/g5A+JWcx13A74adznr/xubn\nf74IxHMZmjII0L0k7s6SRcoMjlwTG5E0ugyO22a7GKcWHvhMJlOpsc8puc1v\nQKRO\r\n=5otK\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/addapptables-ng-web-socket.js","main":"bundles/addapptables-ng-web-socket.umd.js","fesm5":"fesm5/addapptables-ng-web-socket.js","es2015":"fesm2015/addapptables-ng-web-socket.js","module":"fesm5/addapptables-ng-web-socket.js","esm2015":"esm2015/addapptables-ng-web-socket.js","typings":"addapptables-ng-web-socket.d.ts","_npmUser":{"name":"teogl","email":"teito.lop@gmail.com"},"fesm2015":"fesm2015/addapptables-ng-web-socket.js","metadata":"addapptables-ng-web-socket.metadata.json","repository":{"url":"git+https://github.com/addapptables/ng-web-socket.git","type":"git"},"_npmVersion":"5.6.0","description":"Web socket module for Angular","directories":{},"sideEffects":false,"_nodeVersion":"8.11.4","dependencies":{"tslib":"^1.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=7.0.0 < 8.0.0","@angular/common":">=7.0.0 < 8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-web-socket_1.0.1_1555102327845_0.7342540448791885","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@addapptables/ng-web-socket","version":"2.0.0","keywords":["angular socket io","angular","socket-io","web-socket","web socket","addapptables","ng-web-socket","signalr","signal-r"],"author":{"name":"Addapptables"},"license":"MIT","_id":"@addapptables/ng-web-socket@2.0.0","maintainers":[{"name":"addapptable","email":"dev@addapptables.com"},{"name":"sebastian.delaroche","email":"sebastianroche17@gmail.com"},{"name":"teogl","email":"teito.lop@gmail.com"}],"homepage":"https://github.com/addapptables/ng-web-socket","bugs":{"url":"https://github.com/addapptables/ng-web-socket/issues"},"dist":{"shasum":"48317ffbd690a0a80f69e595a749ca8896dcbbaf","tarball":"https://registry.npmjs.org/@addapptables/ng-web-socket/-/ng-web-socket-2.0.0.tgz","fileCount":48,"integrity":"sha512-siOr9m8CZ9zC5Sp13uQOkf4JmqDFfHy/VVok/vWIG/mh5yfxb8/hIKUayCisrCFm82k4mRQFW6kTj1RyUKLlcQ==","signatures":[{"sig":"MEYCIQDmpTPYJucOwBC+AJB5yMYZSd7MZlJ6R/phAVUiZCDfAwIhAOYNHeo3CYZEamSOzu2ZXm3uPiOCr2p649/pH7WV1ZP0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":224678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZEu7CRA9TVsSAnZWagAAnbkP/2y2btW7iKPTGysHU6Vi\n6PtXSfLqIlUB1jc1c1iyc+tJoKUG3weZ6KCakV4FGzXzpAI3t8rI+W9NgwAS\nDx/VzOoqyO9yLNmKP3iXimDwUcKCurWe1JJMqK8eVbxDOY7K8eGLmGLxWd+A\neOHdeO/61d36mYW69R0eIYiLHEPa6FKF0qP9hd+aUhTdcKk5QjRpkz+tMvsA\nGLtABcYTFZwqx635a3aAcc6sUik8rJfT09yHfkLj+JV1P31fwbCM7u6yM2Mu\nq/thl9iw95Lc+ByVFFZpZtLftsKdri4dwQF5mCtDUxli4lKmfdvpulNXNA1F\nNH4YAzFxdocDHojGfrHZx4Aco/EYF6dVHaH/ALjZXdv98AFBj1jyME94Gzrp\naiSGgRFmZupk1Z+xfYzmEJ0jXyXWsa3lC26ViMziw27tUFBdQzJISjAA97+4\niBISqAhvgL9MnXpw00t/luMpwf6oFgma0SBUX8vC5ihrtJkyK9eDfFi3wISb\nBimxdhRvj9qt2F7Tv/efC0SfC0w5uvcfSnR9XRzYp+MNByc2kL7xTAy7X/aw\nl8UQ+89PsGwl7I9Q2NzbXOLQcsqA+j5utP1N+npLYQ39w7mAkdNKNYkM8AGp\nFy6EWpk0G5c10GXuK5LFDZSyOQS/D1ncivXnqqSnGy9asT7XZVSoXW9RgAre\n8hvF\r\n=HVnU\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/addapptables-ng-web-socket.js","main":"bundles/addapptables-ng-web-socket.umd.js","fesm5":"fesm5/addapptables-ng-web-socket.js","es2015":"fesm2015/addapptables-ng-web-socket.js","module":"fesm5/addapptables-ng-web-socket.js","esm2015":"esm2015/addapptables-ng-web-socket.js","typings":"addapptables-ng-web-socket.d.ts","_npmUser":{"name":"teogl","email":"teito.lop@gmail.com"},"fesm2015":"fesm2015/addapptables-ng-web-socket.js","metadata":"addapptables-ng-web-socket.metadata.json","repository":{"url":"git+https://github.com/addapptables/ng-web-socket.git","type":"git"},"_npmVersion":"6.9.0","description":"Web socket module for Angular","directories":{},"sideEffects":false,"_nodeVersion":"10.16.0","dependencies":{"tslib":"^1.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":">=8.0.0 < 9.0.0","@angular/common":">=8.0.0 < 9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-web-socket_2.0.0_1566854074502_0.852415224227798","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@addapptables/ng-web-socket","version":"3.0.0","license":"MIT","author":{"name":"Addapptables"},"description":"Web socket module for Angular","homepage":"https://github.com/addapptables/ng-web-socket","peerDependencies":{"@angular/common":"^19.0.0","@angular/core":"^19.0.0"},"dependencies":{"reflect-metadata":"^0.2.2","tslib":"^2.6.0"},"repository":{"type":"git","url":"git+https://github.com/addapptables/ng-web-socket.git"},"bugs":{"url":"https://github.com/addapptables/ng-web-socket/issues"},"keywords":["angular socket io","angular","socket-io","web-socket","web socket","addapptables","ng-web-socket","signalr","signal-r"],"module":"fesm2022/addapptables-ng-web-socket.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","default":"./fesm2022/addapptables-ng-web-socket.mjs"}},"sideEffects":false,"_id":"@addapptables/ng-web-socket@3.0.0","gitHead":"3f5b177d0671a0286ba61e6a45ec6674a17d04f6","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-NsITOp0eLr/oYYCeGsYJdsNv/lwhNenj2OQJzZMwH2b13MRX8Bgg7+cJWpA+M66QjgFJ4op4iQifnmUq3ZjT8w==","shasum":"48a83757177167a835f8b69e49f4949c358b46c0","tarball":"https://registry.npmjs.org/@addapptables/ng-web-socket/-/ng-web-socket-3.0.0.tgz","fileCount":18,"unpackedSize":43410,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID2UeaToJRRcAJ8r4odlIVo4ofkcQH2tyjAZsTXfoZ1fAiB9K7lXIMWAdSOL2pYf3uBB4CKydxwgdSKRPMD34ukTOw=="}]},"_npmUser":{"name":"teogl","email":"teito.lop@gmail.com"},"directories":{},"maintainers":[{"name":"teogl","email":"teito.lop@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ng-web-socket_3.0.0_1781806146827_0.12115564371796284"},"_hasShrinkwrap":false}},"time":{"created":"2019-04-12T19:24:06.640Z","modified":"2026-06-18T18:09:07.075Z","1.0.0":"2019-04-12T19:24:06.954Z","1.0.1":"2019-04-12T20:52:08.078Z","2.0.0":"2019-08-26T21:14:34.584Z","3.0.0":"2026-06-18T18:09:06.969Z"},"bugs":{"url":"https://github.com/addapptables/ng-web-socket/issues"},"author":{"name":"Addapptables"},"license":"MIT","homepage":"https://github.com/addapptables/ng-web-socket","keywords":["angular socket io","angular","socket-io","web-socket","web socket","addapptables","ng-web-socket","signalr","signal-r"],"repository":{"type":"git","url":"git+https://github.com/addapptables/ng-web-socket.git"},"description":"Web socket module for Angular","maintainers":[{"name":"teogl","email":"teito.lop@gmail.com"}],"readme":"# ADDAPPTABLES ng-web-socket\r\n\r\nADDAPPTABLES ng-web-socket is a library for Angular.\r\nThis library has adapters for **socket.io** and **SignalR**.\r\n\r\n## Getting Started\r\n\r\nFor socket.io see the following [link](https://github.com/addapptables/ng-web-socket/tree/master/projects/addapptables/ng-socket-io)\r\n\r\nFor SignalR see the following [link](https://github.com/addapptables/ng-web-socket/tree/master/projects/addapptables/ng-signal-r)\r\n\r\nChoose the version corresponding to your Angular version:\r\n\r\n Angular     | @addapptables/ng-web-socket\r\n ----------- | -------------------\r\n 19          | 3.x\r\n 8           | 2.x\r\n 7           | 1.x\r\n\r\n```\r\nnpm i @addapptables/ng-web-socket --S\r\n```\r\n\r\n> **v3 highlights:** Angular 19 support, standalone provider APIs\r\n> (`provideWebSocket` / `provideWebSocketFeature`), socket.io-client v4 and\r\n> `@microsoft/signalr`. The classic `NgModule` API (`NgWebSocketModule.forRoot` /\r\n> `forFeature`) is still fully supported.\r\n\r\n## Create a websocket service\r\n\r\n```typescript\r\nimport { Socket } from 'socket.io-client';\r\nimport { WebSocketGateway, WebSocketServer, Subscribe } from '@addapptables/ng-web-socket';\r\n\r\n// gateway with params\r\n@WebSocketGateway({\r\n  url: 'http://localhost:8081',\r\n  autoConnect: true\r\n})\r\nexport class WebSocketService {\r\n\r\n  // web socket connection\r\n  @WebSocketServer()\r\n  server: Socket;\r\n\r\n  // subscribe event\r\n  @Subscribe('news')\r\n  connectedUsers(data: any) {\r\n    console.log(data);\r\n    this.server.emit('my other event', { my: 'data' });\r\n  }\r\n\r\n  // emit events\r\n  sendMessage() {\r\n    this.server.emit('my other event', { my: 'data' });\r\n  }\r\n}\r\n```\r\n\r\n## Usage\r\n\r\n### Standalone API (Angular 19+) — recommended\r\n\r\nRegister the adapter and your gateways in `bootstrapApplication`:\r\n\r\n```typescript\r\nimport { bootstrapApplication } from '@angular/platform-browser';\r\nimport { provideWebSocket } from '@addapptables/ng-web-socket';\r\nimport { SocketIoAdapter } from '@addapptables/ng-socket-io';\r\nimport { AppComponent } from './app/app.component';\r\nimport { WebSocketService } from './app/web-socket.service';\r\n\r\nbootstrapApplication(AppComponent, {\r\n  providers: [\r\n    provideWebSocket(SocketIoAdapter, [WebSocketService, /* other socket services here */]),\r\n    // Adapter is required, gateways array can be empty:\r\n    // provideWebSocket(SocketIoAdapter, []),\r\n  ],\r\n});\r\n```\r\n\r\nFor lazy / feature scopes (e.g. lazy routes), use `provideWebSocketFeature`:\r\n\r\n```typescript\r\nimport { Routes } from '@angular/router';\r\nimport { provideWebSocketFeature } from '@addapptables/ng-web-socket';\r\nimport { ChatGateway } from './chat/chat.gateway';\r\n\r\nexport const routes: Routes = [\r\n  {\r\n    path: 'chat',\r\n    providers: [\r\n      provideWebSocketFeature([ChatGateway, /* other socket services here */]),\r\n    ],\r\n    loadComponent: () => import('./chat/chat.component').then((m) => m.ChatComponent),\r\n  },\r\n];\r\n```\r\n\r\n### NgModule API (legacy, still supported)\r\n\r\nImport the adapter and `WebSocketService` into the module:\r\n\r\n```typescript\r\nimport { NgWebSocketModule } from '@addapptables/ng-web-socket';\r\nimport { SocketIoAdapter } from '@addapptables/ng-socket-io';\r\n@NgModule({\r\n  imports: [\r\n    ...,\r\n    NgWebSocketModule.forRoot(SocketIoAdapter, [WebSocketService, /* other socket services here */])\r\n    /*\r\n    Or\r\n    NgWebSocketModule.forRoot(SocketIoAdapter, [])\r\n    Adapter is required\r\n    */\r\n  ]\r\n})\r\nexport class AppModule { }\r\n```\r\n\r\nFor child modules:\r\n\r\n```typescript\r\nimport { NgWebSocketModule } from '@addapptables/ng-web-socket';\r\n@NgModule({\r\n  imports: [\r\n    ...,\r\n    NgWebSocketModule.forFeature([WebSocketService, /* other socket services here */])\r\n  ]\r\n})\r\nexport class FeatureModule { }\r\n```\r\n\r\n## Resolving the url from a service\r\n\r\nIf you require a service to obtain the url, you can do the following:\r\n\r\n```typescript\r\nimport { Socket } from 'socket.io-client';\r\nimport {\r\n  WebSocketGateway,\r\n  WebSocketServer,\r\n  Subscribe,\r\n  ISocketWithOptions,\r\n  WebSocketOptions,\r\n  ManagerSocketAdapter,\r\n} from '@addapptables/ng-web-socket';\r\n\r\n// gateway with params\r\n@WebSocketGateway({\r\n  autoConnect: false\r\n})\r\nexport class WebSocketService implements ISocketWithOptions {\r\n\r\n  // web socket connection\r\n  @WebSocketServer()\r\n  server: Socket;\r\n\r\n  constructor(\r\n    @Inject(API_BASE_URL) private _baseUrl: string,\r\n    private _managerSocketAdapter: ManagerSocketAdapter\r\n  ) { }\r\n\r\n  // build options for websocket\r\n  withOptions(): WebSocketOptions {\r\n    const token = '123';\r\n    const url = this._baseUrl + '?token=' + token;\r\n    return {\r\n      url\r\n    };\r\n  }\r\n\r\n  connect() {\r\n    this._managerSocketAdapter.connect(this);\r\n  }\r\n\r\n  // subscribe event\r\n  @Subscribe('news')\r\n  connectedUsers(data: any) {\r\n    console.log(data);\r\n    this.server.emit('my other event', { my: 'data' });\r\n  }\r\n\r\n  // emit events\r\n  sendMessage() {\r\n    this.server.emit('my other event', { my: 'data' });\r\n  }\r\n}\r\n```\r\n\r\nInject the websocket service into the component:\r\n\r\n```typescript\r\n@Component({\r\n    ...\r\n})\r\nexport class YourComponent implements OnInit {\r\n\r\n  constructor(\r\n    public _webSocketService: WebSocketService\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this._webSocketService.connect();\r\n  }\r\n}\r\n```\r\n\r\n## Custom adapters\r\n\r\nCreate a custom adapter by implementing `ISocket`:\r\n\r\n```typescript\r\nimport { io, Socket, ManagerOptions, SocketOptions } from 'socket.io-client';\r\nimport { ISocket } from '@addapptables/ng-web-socket';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\n// implements ISocket\r\nexport class SocketIoAdapter implements ISocket<Socket, Partial<ManagerOptions & SocketOptions>> {\r\n\r\n    // connect to ws transport\r\n    connect(url: string, options?: Partial<ManagerOptions & SocketOptions>): Promise<Socket> {\r\n        return new Promise<Socket>((resolve, reject) => {\r\n            try {\r\n                // In socket.io-client v4 `io()` connects automatically.\r\n                const connection = io(url, options);\r\n                resolve(connection);\r\n            } catch (error) {\r\n                reject(error instanceof Error ? error.message : error);\r\n            }\r\n        });\r\n    }\r\n\r\n    // bind events with current connection\r\n    bindEvent(connection: Socket, event: string, callFunction: (...args: any[]) => void): void {\r\n        connection.on(event, callFunction);\r\n    }\r\n\r\n    // disconnect current connection\r\n    disconnect(connection: Socket): Promise<void> {\r\n        return new Promise<void>((resolve, reject) => {\r\n            try {\r\n                connection.disconnect();\r\n                resolve();\r\n            } catch (error) {\r\n                reject(error instanceof Error ? error.message : error);\r\n            }\r\n        });\r\n    }\r\n}\r\n```\r\n\r\n## API reference\r\n\r\n### Standalone providers\r\n\r\n| Function | Description |\r\n| --- | --- |\r\n| `provideWebSocket(adapter, gateways)` | Registers the socket adapter and root gateways. Use it in `bootstrapApplication` / `ApplicationConfig`. |\r\n| `provideWebSocketFeature(gateways)` | Registers feature gateways for a lazy / route scope. |\r\n\r\n### NgModule\r\n\r\n| Method | Description |\r\n| --- | --- |\r\n| `NgWebSocketModule.forRoot(adapter, gateways)` | Root module configuration. |\r\n| `NgWebSocketModule.forFeature(gateways)` | Feature module configuration. |\r\n\r\n### Decorators\r\n\r\n| Decorator | Description |\r\n| --- | --- |\r\n| `@WebSocketGateway(options)` | Marks a class as a websocket gateway (`url`, `autoConnect`, `options`). |\r\n| `@WebSocketServer()` | Injects the live connection into the decorated property. |\r\n| `@Subscribe(event)` | Binds a method to an incoming socket event. |\r\n","readmeFilename":"README.md"}