{"_id":"@addapptables/ng-signal-r","_rev":"8-9fa1145d83d44313e70eab63550b5ee8","name":"@addapptables/ng-signal-r","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@addapptables/ng-signal-r","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-signal-r@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":"a9e62a672dc742d730626b7f2170993233ac77a9","tarball":"https://registry.npmjs.org/@addapptables/ng-signal-r/-/ng-signal-r-1.0.0.tgz","fileCount":24,"integrity":"sha512-+JSuNbP3qp3ZEVGLC8EASo6lntBA6g92/YLQk1qrjBkNTomftfXeEfBopJxDfu/LvHASJakQ8eOTazHmXplqHQ==","signatures":[{"sig":"MEUCIH+Jvi/GlUIgiQFLSET7+IvTMKaREH6BYs4WsB/bHNvqAiEAuuopMsKlnlEA3KQ2OWB3XLfYZHFvzK2sAVx29d+1F/0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":65826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcsOikCRA9TVsSAnZWagAArmgP/0QGapsA0/9Ya8T5+u7a\nNAVCqNatJ9t6JO3absu2Svp07xeVVyGkogWNSzzQhU1D3xBucNuBNUoEjRRi\nm+/lBfqfDMizHLDTAb0kqryqfExSY5jBgDYnB5M36F0kQBuzbCBP+fYXNRiR\nKCNBfqwZkjoZcbwUx0cB2aR0rDanQzwBudQQhC+H09v5LH9gRWWuAmxcxnJn\nL+XoGJ6vgXCrx5D6iUmD25PCPGWozBOD7OQXBHjwFQdAmm1fB9d4Os4K3+Yp\nPKQSfeJi91vd1hcxAY77NS21uj3EVQqiq88khdBRopSU7TXfX5AiwdhZf8Kn\nAY2tR0ZXtwiVsdPpnqhTm5uk129Bum/rl7ZhIf75vD8rBIH7h6cR7ZjH88ST\nvLMYAOeCImTt4c5i+jZ6/tg4CfeGB95qc7MmIzNm1r0SGH4yKHhChXDxEGCx\nwTrxFepBJdUzQ35iUdUAW4l4DdXaiY25OrhinhMxNdp0M3qYJnzmOAwWtr3p\n0ZtWIM8tWA/X2mJ0UWexV7I63057CgPXMn404Qm5W5hOsIwgF8ynQbJSNfPo\nKo8e77qmYBK9QLAPz+j42Xefy0enfVYE2M1Hf6UmWYPw4V+6qnJB8Ql3eZNT\n6dSNOJCNEhZPu23kmCu5LKiORVCfKplfhfuyjV+qNR2Q74L3bYo8hMzr+V4I\nakTV\r\n=nKo0\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/addapptables-ng-signal-r.js","main":"bundles/addapptables-ng-signal-r.umd.js","fesm5":"fesm5/addapptables-ng-signal-r.js","es2015":"fesm2015/addapptables-ng-signal-r.js","module":"fesm5/addapptables-ng-signal-r.js","esm2015":"esm2015/addapptables-ng-signal-r.js","typings":"addapptables-ng-signal-r.d.ts","_npmUser":{"name":"teogl","email":"teito.lop@gmail.com"},"fesm2015":"fesm2015/addapptables-ng-signal-r.js","metadata":"addapptables-ng-signal-r.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","@aspnet/signalr":">=1.0.0 <2.0.0","@addapptables/ng-web-socket":">=1.0.0 < 2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-signal-r_1.0.0_1555097763515_0.6803053122507294","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@addapptables/ng-signal-r","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-signal-r@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":"b4398a9d3ece7ebb50368c7d3a32e2e4667ff0a8","tarball":"https://registry.npmjs.org/@addapptables/ng-signal-r/-/ng-signal-r-1.0.1.tgz","fileCount":21,"integrity":"sha512-agKM+RUg5NQXCieXndw6D1ZCVLTkyxmIXfWdHvWqKCqCX3S7FYmbHUFTjdEaeoKUSSg5+ugF11pFPzmL4SSc+g==","signatures":[{"sig":"MEUCIQDCtz+qGmZD0TYIHVKkKRRq0XfMtB6vxuqWJbqSkAo96wIgUSQp/EpXWHJmF/AEwEvjd4yAJV+sBQPD9S5/11qGVq8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":64394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcsPpQCRA9TVsSAnZWagAAFjYP/2P56qJrvfFmex9pFfYs\nc1RZdBqOWoR7rUz5j6tXYWr5UxogNAecuoukcqKnyWrz/n75CcA05kM2HF7n\nyk/56P5MdDFjcCJnCgJmkiMVHaNvRgjVHrQmrUYjxl7ToiQ4mbzPT7OZXjpr\nNhWe6KU5s1c1Sy7GzS9sg2rHaEhmbIQbSN9u3R30SmmpPracyRyWotYf7A5C\nuWKgeLTPDkRiFlgX6+JQBXb9JOqjVdCiScm+CJ5gIB3GQ113ida+l/f4YHhD\nxZXLhOSVZU/nz886OdcOYcV6po4Z0ukF9sjcitk7cvA6uXZvYLqicrwBjz7/\nL98tlVzhsWy5sIlHLM1bvTX2/UIoU6AiyXidgcVNmhyYtP47nyNgcuddQUcS\nBtj6F32n5tueLzwS4S2K/m3NNhpdfOdM65fEaeE7rkg66pxXlT1CLlKu3Vqw\n4x/607qhGwqzLuAD78sfFiCuCx6x+oKkRmbCOIXwaGcrW7pF53pD5B/MsUWc\nvER7avlw/G6J1+LidK3wZ6P8LZ3teWNNCPd9npisqjW8PwnHRHHkqsPe26ve\nGYVQpPR6fTOvcG1ho38WKstjS4etc66vavM/qqgDlYw33kGGqOYW9/uTrVOx\nSyTF2/Lig68tm4/y3sDnsmVM+dZBxcLyu71pKeEQ6rJ9Em7YgyiJ9fc7VBTD\nljsK\r\n=am39\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/addapptables-ng-signal-r.js","main":"bundles/addapptables-ng-signal-r.umd.js","fesm5":"fesm5/addapptables-ng-signal-r.js","es2015":"fesm2015/addapptables-ng-signal-r.js","module":"fesm5/addapptables-ng-signal-r.js","esm2015":"esm2015/addapptables-ng-signal-r.js","typings":"addapptables-ng-signal-r.d.ts","_npmUser":{"name":"teogl","email":"teito.lop@gmail.com"},"fesm2015":"fesm2015/addapptables-ng-signal-r.js","metadata":"addapptables-ng-signal-r.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","@aspnet/signalr":">=1.0.0 <2.0.0","@addapptables/ng-web-socket":">=1.0.0 < 2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-signal-r_1.0.1_1555102287862_0.25555805814896937","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@addapptables/ng-signal-r","version":"2.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-signal-r@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":"f572034a53b7656e0569e96f9ea39c0fa2446ade","tarball":"https://registry.npmjs.org/@addapptables/ng-signal-r/-/ng-signal-r-2.0.0.tgz","fileCount":21,"integrity":"sha512-J2svFDx93e4ZkruwwTl39xtEUOvOWlXjmrPxM+lFCub9qGNHJHveRb3gUxxB9trk5O+MXVf5J9H86ZFy3ZGPKg==","signatures":[{"sig":"MEYCIQD3ZZKXaCI6FqYSodbv6suHnLwpYyKrv78UJudC77fn1gIhAIU86163PYmZRWErJj8Wj74dmR5fK1urVAugAt7ApGxY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":80616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZEr5CRA9TVsSAnZWagAARaYQAKG4qn9yWRFD9Gg5Sa3F\nMs5O8kxetDAgDa8aG5wSM8Z1K24vfvIu8wdViV+2IA+tC2UsvjG+b11rqxuK\nVVFTAnilM/+Iy+DsfjkVf3evFmNYdhejPdZ5StDwXvOMQ07GBVs5wt0FnMa0\nZCkIbw0ugej1f3f/T1OavoETNFsAFPkN5ePdxuJETBq2Bfug14cSkJjRStu9\nWE8eKQWEYp2e027rSzdEkmGwUIhAuANnoggA93SAvfSSHv7PMCZVHm18NNOu\nUeXVUsRQBrMMC59sCW81OefZUQezGS53WJ/iS6Kd2hGqh06YfkVg7wYPAe0w\nmJZNR9DjtK/xB3ct910p+4OX4TgP7J77mB4ssI1+PkhEx/WRo6QUp/hgmdgI\nFm0D4b+xJj9VRCxKjfWpq8QAJYDPYaoekj2kl3TlHoe9PFCd66j1m8Al3m13\nxiHgnwcUuCRWrpWPhfndAip1fWZTOMcQF3x+wEO1yyDt5xNIm2lyKfzdLfoq\nagkUxkr76+VTZBD0xI6Di9ezrPBBySLqtZnJ5gbGlfPW2jlv18CybWhXfRfe\nHlbF4nnoe2c+N4L8tsvNkkNWjICyGPnJ1bj4lXdeB0bDNC5FAtvcg5ZGti6s\n0B52rWpW/7Kf1HXWS/zHDP0gqd0olFZAkLfonbCaDqZ79BAQEyXljsJK3lUU\nHqC3\r\n=ArXT\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/addapptables-ng-signal-r.js","main":"bundles/addapptables-ng-signal-r.umd.js","fesm5":"fesm5/addapptables-ng-signal-r.js","es2015":"fesm2015/addapptables-ng-signal-r.js","module":"fesm5/addapptables-ng-signal-r.js","esm2015":"esm2015/addapptables-ng-signal-r.js","typings":"addapptables-ng-signal-r.d.ts","_npmUser":{"name":"teogl","email":"teito.lop@gmail.com"},"fesm2015":"fesm2015/addapptables-ng-signal-r.js","metadata":"addapptables-ng-signal-r.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","@aspnet/signalr":">=1.0.0 <2.0.0","@addapptables/ng-web-socket":">=2.0.0 < 3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ng-signal-r_2.0.0_1566853880978_0.554518627581803","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@addapptables/ng-signal-r","version":"3.0.0","license":"MIT","author":{"name":"Addapptables"},"description":"Web socket module for Angular","homepage":"https://github.com/addapptables/ng-web-socket","peerDependencies":{"@addapptables/ng-web-socket":">=3.0.0 < 4.0.0","@angular/common":"^19.0.0","@angular/core":"^19.0.0","@microsoft/signalr":">=7.0.0"},"dependencies":{"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","web-socket","web socket","addapptables","ng-web-socket","signalr","signal-r"],"module":"fesm2022/addapptables-ng-signal-r.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","default":"./fesm2022/addapptables-ng-signal-r.mjs"}},"sideEffects":false,"_id":"@addapptables/ng-signal-r@3.0.0","gitHead":"3f5b177d0671a0286ba61e6a45ec6674a17d04f6","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-SxYiecSqSrPBewzCyG232EYhc1BzK0vBsoBJlVSWUMbpA2kSA55gSafBzXSY6hQhTMps/P7hxTpgnyCv2vWtZQ==","shasum":"55056277575f0eb23ea334ee2f2d9e86500c867f","tarball":"https://registry.npmjs.org/@addapptables/ng-signal-r/-/ng-signal-r-3.0.0.tgz","fileCount":8,"unpackedSize":11504,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFj8i57kx0N7BNipECsAhK0uWXx+fmkdD504VDi+dwtoAiBkuQ2n9xq0xuvOxQaoRs31whbHtNQoIMw/kj2zNc4y7w=="}]},"_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-signal-r_3.0.0_1781806161490_0.7039345726159489"},"_hasShrinkwrap":false}},"time":{"created":"2019-04-12T19:36:03.360Z","modified":"2026-06-18T18:09:21.762Z","1.0.0":"2019-04-12T19:36:03.722Z","1.0.1":"2019-04-12T20:51:28.017Z","2.0.0":"2019-08-26T21:11:21.109Z","3.0.0":"2026-06-18T18:09:21.614Z"},"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","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-signal-r\r\nADDAPPTABLES ng-signal-r is a library for Angular,\r\nthis library is a **SignalR** adapter for @addapptables/ng-web-socket.\r\n\r\n## Getting Started\r\nTo get started, let's install the package through npm:\r\n\r\nChoose the version corresponding to your Angular version:\r\n\r\n Angular     | @addapptables/ng-signal-r\r\n ----------- | -------------------\r\n 19          | 3.x\r\n 8           | 2.x\r\n 7           | 1.x\r\n\r\n> **v3 note:** the deprecated `@aspnet/signalr` package has been replaced by\r\n> `@microsoft/signalr`. The API is identical — only the import specifier and the\r\n> installed package change.\r\n\r\n```\r\nnpm i @addapptables/ng-signal-r @addapptables/ng-web-socket @microsoft/signalr --S\r\n```\r\n\r\n## How to use\r\n\r\n### Create a websocket service\r\n\r\n```typescript\r\nimport { HubConnection, HttpTransportType, LogLevel } from '@microsoft/signalr';\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:22721/signalr-hub',\r\n  autoConnect: true,\r\n  options: {\r\n    transport: HttpTransportType.WebSockets,\r\n    skipNegotiation: true,\r\n    logger: LogLevel.Information\r\n  }\r\n})\r\nexport class WebSocketService {\r\n\r\n  // web socket connection\r\n  @WebSocketServer()\r\n  server: HubConnection;\r\n\r\n  // subscribe event\r\n  @Subscribe('news')\r\n  connectedUsers(data: any) {\r\n    console.log(data);\r\n    this.server.send('my other event', { my: 'data' });\r\n  }\r\n\r\n  // send events\r\n  sendMessage() {\r\n    this.server.send('my other event', { my: 'data' });\r\n  }\r\n}\r\n```\r\n\r\n### Standalone API (Angular 19+) — recommended\r\n\r\n```typescript\r\nimport { bootstrapApplication } from '@angular/platform-browser';\r\nimport { provideWebSocket } from '@addapptables/ng-web-socket';\r\nimport { SignalRAdapter } from '@addapptables/ng-signal-r';\r\n\r\nbootstrapApplication(AppComponent, {\r\n  providers: [\r\n    provideWebSocket(SignalRAdapter, [WebSocketService, /* other socket services here */]),\r\n    // Adapter is required, gateways array can be empty:\r\n    // provideWebSocket(SignalRAdapter, []),\r\n  ],\r\n});\r\n```\r\n\r\nFor lazy / feature scopes:\r\n\r\n```typescript\r\nimport { provideWebSocketFeature } from '@addapptables/ng-web-socket';\r\n\r\nexport const routes: Routes = [\r\n  {\r\n    path: 'chat',\r\n    providers: [provideWebSocketFeature([ChatGateway])],\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 { SignalRAdapter } from '@addapptables/ng-signal-r';\r\n@NgModule({\r\n  imports: [\r\n    ...,\r\n    NgWebSocketModule.forRoot(SignalRAdapter, [WebSocketService, /* other socket services here */]),\r\n    /*\r\n    Or\r\n    NgWebSocketModule.forRoot(SignalRAdapter, [])\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 { HubConnection, IHttpConnectionOptions, HttpTransportType, LogLevel } from '@microsoft/signalr';\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<IHttpConnectionOptions>({\r\n  autoConnect: false,\r\n  options: {\r\n    transport: HttpTransportType.WebSockets,\r\n    skipNegotiation: true,\r\n    logger: LogLevel.Information\r\n  }\r\n})\r\nexport class WebSocketService implements ISocketWithOptions<IHttpConnectionOptions> {\r\n\r\n  // web socket connection\r\n  @WebSocketServer()\r\n  server: HubConnection;\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<IHttpConnectionOptions> {\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.send('my other event', { my: 'data' });\r\n  }\r\n\r\n  // send events\r\n  sendMessage() {\r\n    this.server.send('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","readmeFilename":"README.md"}