首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使guard订阅Angular 2中服务的长轮询请求

在Angular 2中,要使guard订阅服务的长轮询请求,可以按照以下步骤进行:

  1. 创建一个Guard类:首先,创建一个Guard类来实现CanActivate接口,该接口用于控制导航到某个路由的权限。可以使用Angular CLI生成一个Guard类,命令为:ng generate guard guard-name。
  2. 在Guard类中注入服务:在Guard类的构造函数中注入需要订阅长轮询请求的服务。例如,假设服务名为DataService,可以这样注入:constructor(private dataService: DataService) {}
  3. 实现CanActivate接口:在Guard类中实现CanActivate接口的canActivate方法。在该方法中,订阅服务的长轮询请求,并返回一个Observable<boolean>来表示是否允许导航到目标路由。
代码语言:typescript
复制

import { Injectable } from '@angular/core';

import { CanActivate } from '@angular/router';

import { Observable } from 'rxjs';

@Injectable()

export class LongPollingGuard implements CanActivate {

代码语言:txt
复制
 constructor(private dataService: DataService) {}
代码语言:txt
复制
 canActivate(): Observable<boolean> {
代码语言:txt
复制
   return this.dataService.subscribeLongPollingRequest();
代码语言:txt
复制
 }

}

代码语言:txt
复制
  1. 在路由配置中使用Guard:在路由配置中使用Guard来保护需要订阅长轮询请求的路由。在路由配置中,将Guard类添加到目标路由的canActivate属性中。
代码语言:typescript
复制

import { NgModule } from '@angular/core';

import { Routes, RouterModule } from '@angular/router';

import { LongPollingGuard } from './long-polling.guard';

import { TargetComponent } from './target.component';

const routes: Routes = [

代码语言:txt
复制
 {
代码语言:txt
复制
   path: 'target',
代码语言:txt
复制
   component: TargetComponent,
代码语言:txt
复制
   canActivate: [LongPollingGuard]
代码语言:txt
复制
 }

];

@NgModule({

代码语言:txt
复制
 imports: [RouterModule.forRoot(routes)],
代码语言:txt
复制
 exports: [RouterModule]

})

export class AppRoutingModule {}

代码语言:txt
复制

以上步骤中,Guard类通过注入服务来订阅长轮询请求,并在canActivate方法中返回一个Observable<boolean>,表示是否允许导航到目标路由。在路由配置中使用Guard来保护需要订阅长轮询请求的路由。

对于腾讯云相关产品和产品介绍链接地址,可以参考腾讯云官方文档或者腾讯云开发者社区获取更详细的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Angular的12个经典问题,看看你能答对几个?(文末附带Angular测试)

Route Guard只是路由器运行来检查路由授权的接口方法。...这通常用在setter中,当类中的值被更改完成时。 可以通过模块的任何一个组件,使用订阅方法来实现事件发射的订阅。...更少的Http请求数:如果应用程序没有捆绑来支持延迟加载(或任何原因),对于每个关联的HTML和CSS,都会有一个单独的服务器请求。...但是预编译的应用程序会将所有模板和样式与组件对齐,因此到服务器的Http请求数量会更少。 更快的渲染:如果应用程序不是AOT编译,那么应用程序完全加载时,编译过程会发生在浏览器中。...如果服务器的HTTP请求结果或其它一些异步操作不再需要,则Observable的订阅者可以取消订阅,而Promise将最终调用成功或失败的回调,即使你不需要通知或其提供的结果。

17.4K80

实战 | 基于node+socket.io+redis的多房间多进程聊天室

短轮询(Polling) 客户端需要定时往浏览器轮询发送请求,且只有当服务有数据更新后,客户端的下一次轮询请求才能拿到更新后的数据,在数据更新前的多次请求相当于无效。...这对带宽资源造成了极大的浪费,若提高轮询定时器时间,又会有数据更新不及时的烦恼。 commet 为了解决短轮询的弊端,一种基于http长连接的"服务器推"方式被hack出来。...其与短轮询的区别主要是,采用commet时,客户端与服务端保持一个长连接,当数据发生改变时,服务端主动将数据推送到客户端。Comet 又可以被细分为两种实现方式,一种是长轮询机制,一种是流技术。...长轮询 长轮询跟短轮询不同的地方是,客户端往服务端发送请求后,服务端判断是否有数据更新,若没有,则将请求hold住,等待数据更新时,才返回响应。...如何做到多节点的同时推送,我们需要建立一套多节点之间的消息分发/订阅架构。这时我们引入redis的pub/sub功能。

2.1K20
  • 如何优雅的实现消息通信?

    早期,很多网站为了实现推送技术,所用的技术都是轮询。轮询是指由浏览器每隔一段时间向服务器发出 HTTP 请求,然后服务器返回最新的数据给客户端。...常见的轮询方式分为轮询与长轮询,它们的区别如下图所示: ?...这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而 HTTP 请求与响应可能会包含较长的头部,其中真正有效的数据可能只是很小的一部分,所以这样会消耗很多带宽资源。...接下来阿宝哥将介绍如何利用 Redis 提供的发布与订阅功能实现系统间的通信,不过在介绍具体应用前,我们得先熟悉一下 Redis 提供的发布与订阅功能。...到这里发布订阅模式的应用场景,已经介绍完了。最后,阿宝哥来介绍一下如何使用 TS 实现一个支持发布与订阅功能的 EventEmitter 组件。

    1.5K50

    【译】.NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容

    运行时编译 Worker服务模板 gRPC模板 Angular模板已更新为Angular 7 SPA认证 SignalR与Endpoint路由集成 SignalR Java客户端支持长轮询 其他详细信息和已知问题...在本节中,我们将展示如何创建一个新的Angular或React模板,该模板允许我们对用户进行身份验证并访问受保护的API资源。...ASP.NET Core应用程序包括已配置的Identity Server实例,可是让Angular应用程序很方面的对用户进行身份验证,并针对ASP.NET Core应用程序中的受保护资源发送HTTP请求...我们向Java客户端添加了长轮询支持,这使它能够在不支持WebSockets的环境中建立连接。...这也使您能够在客户端应用程序中专门选择长轮询传输。 gRPC 模板 这个预览版引入了一个用ASP.NET Core构建的gRPC服务的新模板。

    22.7K10

    基于node+socket.io+redis的多房间多进程聊天室

    传统的Web站点为了实现推送技术,所用的技术都是轮询,这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求。 短轮询(Polling) ?...客户端需要定时往浏览器轮询发送请求,且只有当服务有数据更新后,客户端的下一次轮询请求才能拿到更新后的数据,在数据更新前的多次请求相当于无效。...这对带宽资源造成了极大的浪费,若提高轮询定时器时间,又会有数据更新不及时的烦恼。 commet 为了解决短轮询的弊端,一种基于http长连接的"服务器推"方式被hack出来。...其与短轮询的区别主要是,采用commet时,客户端与服务端保持一个长连接,当数据发生改变时,服务端主动将数据推送到客户端。...长轮询跟短轮询不同的地方是,客户端往服务端发送请求后,服务端判断是否有数据更新,若没有,则将请求hold住,等待数据更新时,才返回响应。

    2.2K50

    基于node+socket.io+redis的多房间多进程聊天室

    传统的Web站点为了实现推送技术,所用的技术都是轮询,这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求。...短轮询(Polling) 客户端需要定时往浏览器轮询发送请求,且只有当服务有数据更新后,客户端的下一次轮询请求才能拿到更新后的数据,在数据更新前的多次请求相当于无效。...这对带宽资源造成了极大的浪费,若提高轮询定时器时间,又会有数据更新不及时的烦恼。 commet 为了解决短轮询的弊端,一种基于http长连接的"服务器推"方式被hack出来。...其与短轮询的区别主要是,采用commet时,客户端与服务端保持一个长连接,当数据发生改变时,服务端主动将数据推送到客户端。...长轮询 长轮询跟短轮询不同的地方是,客户端往服务端发送请求后,服务端判断是否有数据更新,若没有,则将请求hold住,等待数据更新时,才返回响应。

    3.1K91

    Angular核心-路由和导航

    Angular核心-路由和导航 博客首页:蔚说的博客 欢迎关注点赞收藏⭐️留言 作者水平很有限,如果发现错误,求告知,多谢! 有问题可私信交流!!!...(达内教育学习笔记)仅供学习交流 @[TOC]Angular核心-路由和导航) 多页面应用 :一个项目有多个完整的HTML文件,使用超链接跳转–摧毁一颗DOM树,同步请求另一颗,得到之后再重建新的DOM...单页面应用 :称为SPA(Single Page Application),整个项目中有且只有一个“完整的”HTML文件,其他的页面都是DIV片段,需要哪个“页面”就将其异步请求下来,“插入”到“完整的...==单页面应用的优势:==整个项目中客户端只需要下载一个HTML页面,创建一个完整的DOM树,页面跳转都是一个DIV替换另一个DIV而已—能够实现过场动画 单页面应用不足:不利于SEO优化 Angular...视频播放,只能在学校内播放(客户ip地址限制) VIP学员视频播放,只能在13:30-22:00时间播放… Angular提供了“路由守卫(Guard)”来访问路由组件前的检查功能:如果检查通过(return

    2.3K20

    Comet:基于 HTTP 长连接的“服务器推”技术

    但是 AJAX 的应用使请求的出现变得频繁,而 Comet 则会长时间占用一个连接,上述的服务器模型在新的应用背景下会变得非常低效,线程池里有限的线程数甚至可能会阻塞新的连接。...如果是基 于 AJAX 的长轮询方式,客户端可以异步地发出一个 XMLHttpRequest 请求,通知服务器端关闭数据连接。...如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。...观察者模型 Pushlet 使用了观察者模型:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。...服务器端会为每个会话维护一个订阅的主题集合、事件队列。 服务器端的事件源会把新产生的事件以多播的方式发送到每个会话(即订阅者)的事件队列里。

    2.6K30

    Comet:基于 HTTP 长连接的“服务器推”技术

    但是 AJAX 的应用使请求的出现变得频繁,而 Comet 则会长时间占用一个连接,上述的服务器模型在新的应用背景下会变得非常低效,线程池里有限的线程数甚至可能会阻塞新的连接。...如果是基于 AJAX 的长轮询方式,客户端可以异步地发出一个 XMLHttpRequest 请求,通知服务器端关闭数据连接。...如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。...观察者模型 Pushlet 使用了观察者模型:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。...服务器端会为每个会话维护一个订阅的主题集合、事件队列。 服务器端的事件源会把新产生的事件以多播的方式发送到每个会话(即订阅者)的事件队列里。

    2.2K70

    浏览器与服务器的消息通信

    还有一个类似的轮询是使用JSONP跨域请求的方式轮询,在实现起来有差别,但基本原理都是相同的,都是客户端不断的向服务器发起请求。 优点 实现简单。...comet Comet是一种用于Web的推送技术,能使服务器实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式: 长轮询(long polling) 长轮询 (long polling...现在浏览器已经支持CROS的跨域方式请求,因此HTTP和JSONP的长轮询方式是慢慢被淘汰的一种技术,建议采用XHR长轮询。...Pushlet Pushlet 使用了观察者模型:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。...如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。

    1.7K30

    浏览器与服务器的消息通信

    还有一个类似的轮询是使用JSONP跨域请求的方式轮询,在实现起来有差别,但基本原理都是相同的,都是客户端不断的向服务器发起请求。 优点 实现简单。...comet Comet是一种用于Web的推送技术,能使服务器实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式: 长轮询(long polling) 长轮询 (long polling...现在浏览器已经支持CROS的跨域方式请求,因此HTTP和JSONP的长轮询方式是慢慢被淘汰的一种技术,建议采用XHR长轮询。...Pushlet Pushlet 使用了观察者模型:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。...如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。

    1.7K60

    浏览器与服务器的消息通信

    还有一个类似的轮询是使用JSONP跨域请求的方式轮询,在实现起来有差别,但基本原理都是相同的,都是客户端不断的向服务器发起请求。 优点 实现简单。...comet Comet是一种用于Web的推送技术,能使服务器实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式: 长轮询(long polling) 长轮询 (long polling...现在浏览器已经支持CROS的跨域方式请求,因此HTTP和JSONP的长轮询方式是慢慢被淘汰的一种技术,建议采用XHR长轮询。...Pushlet Pushlet 使用了观察者模型:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。...如果客户端使用的是基于 AJAX 的长轮询方式;服务器端返回数据、关闭连接后,经过某个时限没有收到客户端的再次请求,会认为客户端不能正常工作,会释放为这个客户端分配、维护的资源。

    1.8K50

    动手实践,即时通讯WebSocket的代码实现

    近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展了浏览器与服务端的通信功能,使服务端也能主动向客户端发送数据。   ...Web模式 对于信息变化不频繁的Web应用来说造成的麻烦较小,而对于涉及实时信息的Web应用却带来了很大的不便,如带有即时通信、实时数据、订阅推送等功能的应 用。...轮询是最原始的实现实时Web应用的解决方案。轮询技术要求客户端以设定的时间间隔周期性地向服务端发送请求,频繁地查询是否有新的数据改动。...明显地,这种方法会导致过多不必要的请求,浪费流量和服务器资源。  Comet技术又可以分为长轮询和流技术。长轮询改进了上述的轮询技术,减小了无用的请求。...流技术通常是指客户端使用一个隐藏的窗口与服务端建立一个HTTP长连接,服务端会不断更新连接状态以保持HTTP长连接存活;这样的话,服务端就可以通过这条长连接主动将数据发送给客户端;流技术在大并发环境下,

    1K40

    如何在ASP.NET Core中使用SignalR构建与Angular通信的实时通信应用程序

    第一种方法是在定义的时间间隔(轮询)定期调用API 以更新仪表板上的数据。 无论如何,还是有一个问题:如果没有更新的数据,我们会因请求而不必要地增加网络流量。...一种替代方法是长轮询技术:如果服务器没有可用数据,则它可以使请求保持活动状态,直到发生某种情况或达到预设的超时时间为止,而不是发送空响应。如果存在新数据,则完整的响应将到达客户端。...不幸的是,必须在客户端和服务器端都对WebSocket提供完全支持,以使其可用。然后,我们需要提供替代系统(fallback),无论如何,该替代系统都允许我们的应用程序运行。...(将其注入到构造函数中的服务),应该订阅getMessage()方法并管理到达的消息。...(用于订阅还是用于取消订阅)都可以,但是我们必须注意对主题的粗心使用。

    2.1K20

    Nacos配置中心交互模型是 push 还是 pull ?你应该这么回答

    **长轮询** 长轮询可不是什么新技术,它不过是由服务端控制响应客户端请求的返回时间,来减少客户端无效请求的一种优化手段,其实对于客户端来说与短轮询的使用并没有本质上的区别。...[2021062314550761.png] 服务端根据请求header中的Long-Pulling-Timeout属性来区分请求是长轮询还是短轮询,这里咱们只关注长轮询部分,接着看LongPollingService...(记住这个service很关键)类中的addLongPollingClient()方法是如何处理客户端的长轮询请求的。...[处理长轮询] 到这我们知道服务端是如何挂起客户端长轮询请求的,一旦请求在挂起期间,用户通过管理平台操作了配置项,或者服务端收到了来自其他客户端节点修改配置的请求。...[订阅数据变更事件] DataChangeTask内的主要逻辑就是遍历allSubs队列,上边我们知道,这个队列中维护的是所有客户端的长轮询请求任务,从这些任务中找到包含当前发生变更的groupkey的

    1.4K40

    springMvc DeferredResult的long polling应用

    这里暂抛开某些场景webSocket的解决方案。 举一个生活中的列子来说明长轮询比轮询好在哪里:电商云集的时代,大家肯定都有查询快递的经历,怎么最快知道快递的进度呢?...长轮询保证了每次发起的查询请求都是有效的,极大的减少了与服务端的交互,基于web异步处理技术,大大的提升了服务性能 如果在发散的触类旁通一下,long polling的方式和发布订阅的模式有点类似之处...长轮询的应用有很多,简述下就是:需要及时知道某些消息的变更的场景都可以用长轮询来解决,当然,你可能又想起了发布订阅了,哈哈 比如:在线聊天?...在比如类发布订阅的例子:配置中心服务,当配置中心的配置变更好,相关的客户端程序需要及时更新最新的配置。...disconf就是基于zookeeper的发布订阅来做的,apollo就是采用的DeferredResult的long polling来做的,客户端发起长轮询,配置中心监听器监听到配置变更后,将结果响应给客户端

    20620

    WebSocket 与 Polling , Long-Polling , Streaming 的比较!

    让我们来看看 HTML5 Web Sockets 是如何通过与传统的解决方案进行比较,从而极大地减少不必要的网络流量和延迟的 Polling (轮询), Long-Polling (长轮询), and...Long-Polling (长轮询) 长轮询是让服务器在接收到浏览器所送出 HTTP 请求后,服务器会等待一段时间,若在这段时间里面服务器有新的消息,它就会把最新的消息传回给浏览器,如果等待的时间到了之后也没有新的消息的话...然而,由于流仍然封装在 HTTP 中,介入的防火墙和代理服务器可能会选择缓冲响应,从而增加消息传递的延迟。因此,如果检测到缓冲代理服务器,流式 Comet 解决方案将退回到长轮询。...Web 页面连接并订阅特定的股票通道(message broker上的主题),并使用 XMLHttpReques t每秒轮询更新一次。...注意:后台股票服务实际上每秒会产生大量股票价格更新,因此每秒轮询一次实际上比使用Comet 长轮询解决方案更为谨慎,后者会导致一系列持续轮询,这里轮询有效的节制了数据更新。

    3.2K30

    从游击队到正规军(二):马蜂窝旅游网的IM客户端架构演进和实践总结

    目前采用的是 HTTP 长链接轮询的形式实现,各业务数据消息类型只需遵循约定的通用数据结构,即可实现通过数据通道下发给客户端。数据通道不必关心数据的具体内容,只需要关注接收与发送。...每次 HTTP 长链接请求使用栈顶请求数据,可以模拟在特定业务场景 (如与不同的用户私信) 的不同处理。...4.3、数据通道异常重连机制 当前数据通道通过 HTTP 长链接轮询 (Polling) 实现。 不同业务场景下对 Polling 的影响如下图所示: ?...与目前的 HTTP 轮询实现机制相比, Websocket 有以下优点: 1)较少的控制开销:在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。...相对于 HTTP 需要等待客户端发起请求服务端才能响应,延迟明显更少;即使是和 Comet 等类似的长轮询比较,其也能在短时间内更多次地传递数据; 3)保持连接状态:与 HTTP 不同的是,Websocket

    1.2K20

    深入浅出即时通讯(1)_即时通讯协议对比

    /长轮询 实现简单; 开销大,耗费服务器性能与带宽 支持 请求-响应 Websocket 连接快,开销小...,开发难度大 不支持 1.1.1 http短轮询/长轮询 一个http的请求有如下的特点: 连接必须由客户端发起, 服务端被动等待请求...因此在http的协议上做服务端的消息推送,需要客户端不断轮询,服务器有需要发送的消息时,就在轮询结果中返回给客户端。根据轮询类型的不同,又分为短轮询和长轮询。...http短轮询: [图1.1.3.png] 短轮询的处理如下: 客户端请求服务器,服务器立即返回; 客户端间隔一段时间; 客户端请求服务器,服务器立即返回; http长轮询: [图1.1.4.png...] 短轮询的处理如下: 客户端请求服务器,服务器若有数据,立即返回,否则阻塞等待; 客户端再次请求服务器,服务器若有数据,立即返回,否则阻塞等待; 总结: 不管是http短轮询或http长轮询,其吞吐量以及响应性都十分不尽人意

    3.1K20

    为什么我们需要HTML5 WebSocket

    ,但是对于那些实时要求比较高的应用来说,比如说在线游戏、股票查询,在线证券、设备监控、新闻在线播报、RSS订阅推送等等,当客户端浏览器准备呈现这些信息的时候,这些信息在服务器端可能已经过时了。...而Comet 技术实际上是轮询技术的改进,又可细分为两种实现方式,一种是长轮询机制,一种称为流技术。下面我们简单介绍一下这几种技术: 轮询:     这是最早的一种实现实时Web应用的方案。...长轮询:     长轮询是对定时轮询的改进和提高,目地是为了降低无效的网络传输。...当然,如果服务端的数据变更非常频繁的话,这种机制和定时轮询比较起来没有本质上的性能的提高。 流:     流技术方案通常就是在客户端的页面使用一个隐藏的窗口向服务端发出一个长连接的请求。...WebSocket 的拯救     HTML5 WebSocket设计出来的目的就是要取代轮询和Comet技术,使客户端浏览器具备像C/S架构下桌面系统的实时通讯能力。

    85020
    领券