NodeJS 如何在没有 WebSocket 的情况下处理持久连接?

2024-04-27

我对 NodeJS 真的很陌生(如果我对某些东西听起来很天真,我很抱歉)并且我一直在深入研究示例的源代码聊天应用 http://github.com/ry/node_chat.

但是,我无法理解一件事。我知道 WebSockets 有助于处理持久的全双工双向连接。但是 NodeJS 如何在不使用 WebSockets 的情况下管理上述聊天应用程序中的持久连接呢?如果 NodeJScan处理持久的双向连接,在Node中集成Socket.IO之类的东西到底有什么作用?


除了 WebSocket 之外,您还可以使用长轮询 http://en.wikipedia.org/wiki/Long_polling#Long_polling在服务器和客户端之间创建持久连接的技术。

长轮询是一种变体 传统的投票技术和 允许模拟信息 从服务器推送到客户端。和 长轮询,客户端请求 来自服务器的信息 与普通民意调查类似。然而, 如果服务器没有任何 为客户提供的信息, 而不是发送空响应, 服务器保留请求并等待 以获得一些信息。 一旦信息可用 (或在适当的超时后), 完整的响应发送至 客户。

然而,它不如 WebSockets 高效,但它被使用是因为它与 WebSockets 不同,可以在每个浏览器中工作。尝试看看这个article http://blog.new-bamboo.co.uk/2009/12/7/real-time-online-activity-monitor-example-with-node-js-and-websocket:

将数据减少到 2 KB 字节......并将延迟从 150 毫秒减少 到 50ms 远远超过边际。在 事实上,仅这两个因素就 足以让WebSocket认真起来 谷歌很感兴趣。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJS 如何在没有 WebSocket 的情况下处理持久连接? 的相关文章

  • 如何使用 javascript 选择页面上的任意文本?

    假设我有一个 contentEditablediv 用户可以编辑和更改其中的文本和元素 我如何任意更改此选择div用JavaScript 我所说的 更改 并不是指 更改用户选择的内容 我的意思是实际上更改what被选中 然后 用户应该能够在
  • React-Native 博览会 POST Blob

    我正在使用 React Native 和 expo 并尝试通过 fetch api 发布 blob 图像 我对正文使用表单数据格式 并且我有下一个代码 const blob await response blob const form ne
  • 处理量角器中的未知错误

    我有一个protractor通过配置多个浏览器进行设置multiCapabilities 在 browserstack 上运行测试 我的主要量角器规格 测试之一包含以下内容afterEach block afterEach function
  • 在 javascript/jquery 中获取图像的完整尺寸

    我在页面上有一个图像 该图像已调整大小以适合 div 例如 400x300 如何在 jQuery 中获取图像的完整尺寸 4000x3000 width 和 height 似乎只返回图像的当前大小 图像有naturalWidth and na
  • 检索博客中所有标签的列表

    有没有办法使用 gdata api 检索所有列表labels在博主中 我需要根据该列表创建一个菜单 但不能简单地列出所有帖子并获取它 因为它是一个繁忙的博客 并且有超过 2000 个帖子 以下是使用 json 调用获取标签列表的最简单方法
  • 页面刷新后如何注销用户?

    我正在跟进谷歌的指南 https developers google com identity sign in web sign in sign out a user注销用户 考虑到gapi auth2刷新页面后将是未定义的 我正在做 if
  • antd上传控件需要action函数,但我不需要它

    我正在使用 ant design 组件 并且有一个上传输入 https ant design components upload https ant design components upload 根据文档 需要对道具进行操作 但是 我不
  • 在高图表中突出显示一系列条形图中的一个条形图?

    我有一个图表 显示堆叠和分组的条形图 类似于这个演示 http www highcharts com demo column stacked and grouped 有没有办法从 JavaScript 代码中使系列之一中的其中一个栏突出显示
  • 当 querySelectorAll 在不使用库的情况下不可用时,按属性获取元素?

    p 你怎样才能做到相当于 document querySelectorAll data foo where 查询选择器全部 https developer mozilla org en DOM Document querySelectorA
  • 如何从 angularJS 模板调用encodeURIComponent?

    我的 Angular JS 模板中有一个块 a href foos foo id foo name a 但是 foo id 属性有时可能包含时髦字符 我想做这样的事情 a href foos encodeURIComponent foo i
  • 为什么虽然输入的值确实发生了变化,但jquery更改事件没有触发? [复制]

    这个问题在这里已经有答案了 JSFIDDLE http jsfiddle net meXm3 2 网页代码
  • 如何在 jQuery/javascript 中获取边框宽度

    如何解析边框宽度 style border solid 1px black 在 jQuery javascript 中 elem css border width 不这样做 注意我需要解析 css 的宽度 因为元素可能是display no
  • jQuery:评估 ajax 响应中的脚本

    来自我的 web 应用程序的 XML 响应既有要添加到页面的 HTML 也有要运行的脚本 我正在尝试从我的网络应用程序发回 XML 例如
  • 使用 Sequelize 计算关联条目数

    我有两张桌子 locations and sensors 每个条目在sensors有一个外键指向locations 使用 Sequelize 如何获取所有条目locations以及条目总数sensors与每个条目相关联locations R
  • Electron 中的收据热敏打印机

    我需要找到一种在 javascript 中打印收据的方法Electron 我已经尝试过了QZ TRAY但由于 Electron 它不起作用 我也尝试过节点热敏打印机但它也从来没有对我有用 这里有人知道如何在 javascript Elect
  • Firefox 扩展中的 localStorage

    我正在尝试从 Firefox 扩展访问页面的 localStorage 我的理解是content给出了参考window当前页面的 当我尝试访问页面的 localStorage 时content localStorage 我想我正在得到它的参
  • ElectronJS 捕获屏幕质量低

    我正在使用 ElectronJS 测试屏幕捕获 我可以捕获屏幕 但捕获的视频质量低于原始视频 操作系统 Linux Mint 20 电子版本 11 1 0 这是我的代码 我选择我的屏幕 然后使用以下命令在电子应用程序中显示捕获的屏幕vide
  • 过早退出 Qualtrics 中的循环和合并块

    我目前正在进行一项 Qualtrics 调查 受访者必须解决一长串字谜问题 然后回答一些人口统计问题 为了使变位词部分更容易 我使用了循环和合并块 第一个字段是要解决的变位词 第二个字段是变位词的解决方案 因此调查可以根据受访者的答案来检查
  • 让 hashchange 事件在所有浏览器(包括 IE7)中工作

    我有一些代码 由另一位开发人员编写 在 WordPress 内部进行 AJAX 页面加载 例如 没有页面重新加载 当您单击导航项时 AJAX 会刷新主要内容区域 我的问题是它在 IE7 中被破坏了 我不知道从哪里开始调试 最初的开场白是 v
  • Sencha-touch :保存登录名/密码(保存会话,多任务)

    我有一个 Java Web 应用程序 其中移动部分是用 Sencha touch 开发的 当我启动 sencha touch 应用程序时 她询问我的登录名 密码 因为该应用程序的访问受到限制 但是我想保存用户的登录名 密码 sencha t

随机推荐

  • WCF maxBytesPerRead 限制为 4096

    我在流模式下使用基本的 WCF Web 服务从服务器下载文件 我已将服务器端的绑定指定为
  • IISreset和应用程序池回收对缓存的影响有什么区别

    我遇到了一个奇怪的问题 据我所知 可以通过回收应用程序池来清除缓存 然而 在最近的一个项目中 缓存并没有以这种方式清除 相反 我们必须重置 IIS 以清除缓存 这些行为之间有什么区别 造成我所经历的差异的原因可能是什么 当您回收AppPoo
  • 我怎样才能从表中获得第一个免费ID

    我有一个带有主键字段 ID 的表 我不想使用身份 因为我需要为用户提供手动为新对象选择 ID 的可能性 所以我的想法是 默认情况下 在编辑视图中 ID 字段将为 0 如果用户不更改它 我需要找到第一个免费ID并使用它 如果用户更改 ID 我
  • 从 Java 8 流中获取每个第 n 个元素

    假设我有一个这样的列表 1 2 3 4 5 6 7 8 9 10 是否可以使用 Java 8 流从该列表中获取每个第二个元素以获得以下内容 1 3 5 7 9 或者甚至可能是每三个元素 1 4 7 10 基本上 我正在寻找一个函数来获取流的
  • 在 Azure Web 应用中重写 URL

    我想为我的 Azure Web 应用程序应用一个简单的通配符路由规则
  • 如何在 Panda Dataframe 中应用列表理解?

    From a list的值 我尝试识别总和超过 10 的任何连续值对 a 1 9 3 4 5 所以我写了一个for loop values for i in range len a 2 if sum a i i 2 gt 10 values
  • NodeJS 快速会话 req.session 未定义

    我正在开发一个简单的登录系统 但会话似乎没有保存 我编写了一个简单的代码进行测试 谁能告诉我它有什么问题吗 我正在运行登录 之后我正在运行 is logged 但我从未登录并且两个会话都未定义 var port process env PO
  • 添加 2 个 BigDecimal 值 [重复]

    这个问题在这里已经有答案了 class Point BigDecimal x BigDecimal y Point double px double py x new BigDecimal px y new BigDecimal py vo
  • Eigen 如何沿特定维度连接矩阵?

    我有两个特征矩阵 我想将它们连接起来 就像在 matlab 中一样cat 0 A B eigen 有等价物吗 Thanks 您可以使用逗号初始值设定项语法 水平方向 MatrixXd C A rows A cols B cols C lt
  • 使用 CoreData 进行 Swift 包单元测试

    我有一堆快速文件 它们提供了 CoreData 之上的一些服务 我的单元测试运行良好 我决定使用 XCode 11 将所有这些移至 Swift 包中 单元测试不再运行 运行时错误为caught NSInternalInconsistency
  • 无法解析类或包“h2”

    我为我的网络应用程序开发后端应用程序 在我的项目 SpringBoot Maven 中 我想添加 h2 数据库 根据网上的教程 添加了以下几行应用程序属性 file server port 8088 spring h2 console en
  • 当意图过滤器启动时调试应用程序

    我通常通过按 Eclipse 中的小 bug 图标来调试我的应用程序 但现在我在清单中插入了这样的意图过滤器
  • 在 Rails 控制台中将大十进制转换为字符串

    我试图让我的控制台打印出我所有地点价目表定价的总和 我试图通过控制台完成此任务 但得到一个 BigDecimal 作为结果 纠结于如何将此结果转换为清晰的字符串或整数 Results Location pluck rate card sum
  • Firebase 支付网关?

    我目前正在评估 Firebase 是否适合我正在制作的应用程序 我发现的唯一潜在的症结是接受付款 目前有哪些选项 Firebase 是一个实时数据存储 专注于闪电般快速 可扩展的解决方案 用于同时在数百到数百万客户端之间共享数据 它内部不提
  • 如何更改 MSBuild 在 Team Foundation Build 下使用的构建目录?

    尝试使用 Team Foundation Build 构建我的应用程序时出现以下错误 C WINDOWS Microsoft NET Framework v3 5 Microsoft Common targets 1682 9 错误 MSB
  • 如何在aerospike中获取ttl为-1的记录集?

    我在aerospike中有很多记录 我想获取ttl为 1的记录 请提供解决方案 只是为了澄清 设置TTL 为 1 https github com aerospike aerospike client go blob master docs
  • VB.NET 相当于 C# var 关键字 [重复]

    这个问题在这里已经有答案了 是否有与 C 等效的 VB NETvar关键词 我想用它来检索 LINQ 查询的结果 选项推断 http msdn microsoft com en us library bb384665 aspx必须是on为了
  • 如何在matlab中显示图像上的点?

    我有一些像素点 比如 p1 1 1 和 p2 1 10 等等 我想以任何颜色在图像上显示这些点 这个怎么做 MATLAB plot http www mathworks com help techdoc ref plot html文档非常全
  • emacs24 语义补全

    我正在尝试使用 emacs 24 及其附带的 cedet 版本来完成语义 补全适用于我在自己的源文件中定义的类 但补全不适用于标准库或 STL 内容这是我的 emacs 配置 require cedet require semantic r
  • NodeJS 如何在没有 WebSocket 的情况下处理持久连接?

    我对 NodeJS 真的很陌生 如果我对某些东西听起来很天真 我很抱歉 并且我一直在深入研究示例的源代码聊天应用 http github com ry node chat 但是 我无法理解一件事 我知道 WebSockets 有助于处理持久