当前位置: 首页 > 知识库问答 >
问题:

长时间投票的不利因素?

赖俊
2023-03-14

我只是想知道正确实现长轮询的缺点是什么,因为对于今天的Node.js这样的服务器来说,它很容易实现,并且依赖于得到很好支持的旧http技术(尽管长轮询行为本身可能会破坏它)。

从高层来看,长轮询(尽管有一些额外的开销,但对于中等流量的应用程序来说是可行的)类似于WebSockets的真正推送行为,因为服务器实际上在他喜欢的时候发送它的答案(尽管有一些超时/心跳机制)。

因此,我想由于更多的TCP/IP确认,我们有一些更多的开销,但没有像频繁轮询这样的恒定流量。

共有1个答案

子车俊材
2023-03-14

它每次都会创建一个新的连接,所以它会发送HTTP头...包括可能很大的cookie标头。

而且,仅仅“检查是否有新的东西”是另一个毫无意义的连接。连接意味着许多项目的工作,如防火墙、负载平衡器、web服务器等。可能,一旦您的IT基础设施有了几个检查人员,建立连接是最耗时的事情。

如果您使用的是HTTPS,那么您正在一次又一次地执行最昂贵的操作,TLS握手。一旦建立了连接并且对称加密工作,TLS性能很好,但是建立连接、密钥交换和所有jazz的过程并不快。

这才是大不了的。

由于每次都会创建一个新的连接,如果您有负载平衡的服务器,在循环robbin场景中,您无法知道下一个连接将落在哪个服务器上。

当用户的服务器是已知的,比如使用WebSocket时,您可以直接将事件推送到该服务器,然后服务器将它们中继到连接。如果用户断开连接,服务器可以立即通知用户不再连接,当再次连接时,可以再次订阅。

>

  • 服务器广播(例如股票报价器):背板在这种情况下工作得很好,因为服务器控制消息发送的速率。

    客户端到客户端(例如,聊天):在这种情况下,如果消息数量与客户端数量成比例,则背板可能是一个瓶颈;也就是说,如果消息的速率随着更多客户机的加入而成比例地增长。

    高频实时(例如,实时游戏):这种情况下不建议使用底板。

  •  类似资料:
    • 一、简介 系统的投票功能提供了两种投票类型,第一个是单选投票.第二种是多选投票.网站编辑人员可以根据实际的需求,选择类型进行操作。 何处使用投票: 常用于首页、内容页、及专题页面。所有你想放投票的区域。 如何使用: 只需要根据投票所放位置不同,复制对应代码到模版里即可。 系统信息发布页 和 专题管理内置提供了投票选择功能,只需手动点选,即可添加投票。 针对不同位置CSS样式不同,系统提供了三种常用

    • 现在我们的系统更完善了,但是想要找到最受欢迎的帖子有点难。我们需要一个排名系统来给我们的帖子排个序。 我们可以建立一个基于 karma 的复杂排名系统,权值随着时间衰减,和许多其他因素(很多功能都在 Telescope 中实现了,他是 Microscope 的大哥)。但是对于我们的例子 app, 我们尽量保持简单,我们只按照帖子收到的投票数为它们排序。 让我们实现一个给用户为帖子投票的方法。 数据

    • 获取投票信息 Mudu.Room.Vote.Get(function (response) { response = JSON.parse(response) if (response.status === 'y') { console.log('获取成功,数据为:', response.data) } if (response.status === 'n') {

    • 投票模块 投票模块PC标签调用说明 模块名:vote 模块提供的可用操作   操作名 说明 lists 获取投票列表 get_vote 获取投票概述 获取投票列表(lists): 可用参数: 参数名 是否必须 默认值 说明 siteid 是 null 站点ID enabled 否 1 显示方式 order 否 subjectid DESC 排序方式 代码例子: {pc:vote action="l

    • Mudu.Room.Vote 投票组件 获取投票信息 Mudu.Room.Vote.Get(function (response) { response = JSON.parse(response) if (response.status === 'y') { console.log('获取成功,数据为:', response.data) } if (response.st

    • 我正在努力使一个top.gg投票webhook,由于某些原因,它给我‘未定义’回来时,我投票。下面是我的代码: 有人看到我做错了什么吗?