使用 socket.io 处理超大消息

2024-03-29

我有一个 nodejs 项目,它生成多个与套接字 io 通信的进程(该进程既发送数据又接收数据)。 有时在功能开发过程中,其他程序员可能会犯错误,导致我的套接字基础结构代码发送超过大小 X(例如,超过 500MB)的大消息。

我正在寻找一种方法来捕获此类情况并记录它们,我也不希望此类特定请求会失败。

现在的行为是整个套接字连接失败(不仅仅是特定的大消息),而且我没有找到任何方法来捕获这种情况,以便知道这就是原因。

现在我使用“maxHttpBufferSize”配置限制消息大小:Socket.IO 文档关于它在这里 - “在关闭会话之前消息可以有多少字节或字符(以避免 DoS)。” https://socket.io/docs/server-api/但当这个大小超过并且整个连接失败时,我似乎无法捕获任何错误,这对我来说非常糟糕。

我确实考虑过尝试在通过套接字代码发送数据时添加一些检查,以检查自己消息大小是否太大,但是序列化数据以进行此检查将对性能和socket.io代码产生非常沉重的代价在发送数据之前应该已经这样做了,所以我不想让这种情况发生两次。

我希望找到的最佳解决方案是 socket.io 支持的方法来处理这个问题,如果有一种性能成本较高的不同方法也可能很好。

注意:我正在使用套接字io 2.0.4。 如果仅在更高版本中有修复也是可以接受的。


None

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

使用 socket.io 处理超大消息 的相关文章

  • 我可以从 React Native 项目中删除 tvOS 吗?

    Eventually I will be submitting a react native app to the app store but the app will only run on iOS not tvOS Will I be
  • IE toDataUrl() 安全错误

    我需要从画布上获取图片 因此我从 Amazon S3 获取图像 我在那里启用了跨源资源共享 CORS 并将 croseOrigin 属性 匿名 设置为 img 它适用于 Chrome 和FireFox 但在 IE 上 我通过调用 toDat
  • Protractor 中 element(...) 和 element(...).getWebElement() 之间的区别

    为什么我们需要element getWebElement over element 当两者的工作原理完全相同时 为什么两个 API 具有相同的功能 Protractor是一个方便的包装WebDriverJS javascript 硒绑定 e
  • 不显眼的 Javascript 混淆了事件处理

    你知道我最喜欢引人注目的 javascript 的什么吗 当你触发一个事件时 你总是知道它会做什么 a a 现在每个人都在喝这种不引人注目的酷爱饮料 这一点就不那么明显了 对绑定事件的调用可以发生在页面中包含的任意数量的 javascrip
  • onclick 和 href="javascript:函数名 之间有什么区别?

    有什么区别吗 1 a href Link1 a and 2 a href Link2 a 会以某种方式影响页面性能吗 如果您的元素实际上不应该将用户链接到某个地方 不要将其设为锚元素 如果您正在使用 a 标签只是为了改变下划线 光标 不要
  • 是否可以在 Javascript 中将未声明的变量作为参数传递?

    假设我有一个变量myvar and I don t有一个变量myvar2 我可以毫无问题地运行以下命令 typeof myvar string typeof myvar2 undefined typeof and delete这是我所知道的
  • 对包含数字和字符串的数组进行排序

    我正在尝试对包含字符串 数字和数字作为字符串 例如 1 2 的数组进行排序 我想对这个数组进行排序 以便排序后的数组首先包含数字 然后包含包含数字的字符串 最后包含字符串 var arr 9 5 2 ab 3 1 to be sorted
  • Indexeddb 添加新值而不是更新现有值

    当尝试更新其中的记录时索引数据库使用put方法 看起来是创造了新的价值而不是改变 根据MDN https developer mozilla org en US docs Web API IDBObjectStore put这是更新记录的方
  • Firebase通过时间戳获取数据

    我需要使用过滤数据来获取时间戳匹配的特定数据 例如我需要数据在哪里arrivalTime与数据库中的精确日期和时间字段 时间戳字段匹配 我正在尝试下面 但它没有返回任何数据 arrivalTIme moment todaysDate for
  • 检索 Couchbase 的所有记录(文档)

    我正在使用 node js 并寻找一种方法来获取特定的 couchbase 桶的所有文档 有没有没有循环和增量索引的解决方案 我知道我可以制作一个原子键 然后通过循环使用它来检索所有数据 但我需要一个返回所有文档的函数 是否有任何函数 至少
  • 如何在 Chart.js 中将 Y 轴值从数字更改为字符串?

    我在用Chart js http www chartjs org 我正在尝试更改 y 轴 请参见下面的屏幕截图 我尝试填写yLabels具有字符串数组的属性 但这没有用 任何帮助 将不胜感激 jQuery document ready fu
  • Karate UI 中的 ShadowRoot dom 元素访问问题

    我正在尝试访问 ShadowRoot dom 树元素 但我面临的问题是我无法使用特定的 html 元素来调用 ShadowRoot 因为该元素是动态的 请参见下面的 html 片段 id vaadin text field error 0
  • Javascript无限原型链

    我正在使用以下测试代码 function Test Test prototype MyMethod a function b function 为了运行它 我只需这样做 var test new Test console debug tes
  • Google Chrome 扩展:如何在以编程方式注入的内容脚本中包含 jQuery?

    我正在注射我的内容脚本来自背景页当用户点击浏览器动作按钮 就像这样 chrome browserAction onClicked addListener function tab chrome tabs executeScript null
  • Google 地图 v3 - 我能否确保每次都能顺利平移?

    我的地图在一座城市内有数百个标记 通常不超过 20 英里半径 我已通读文档 但尚未找到一种方法来将 init 设置为在每个标记之间自动平移 无论距离如何 默认行为是如果靠近则平移 如果远则跳跃 我理解他们为什么要这样做 因为地图不会在选定的
  • 使用Javascript自动将光标移动到下一个表单字段[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 是否可以使用Javascipt自动将
  • Node.js 管道化 HTTP 客户端代理?

    Node js 中内置的 HTTP 客户端似乎不支持管道请求 https stackoverflow com a 5776649 362536 然而 我突然想到 也许可以创建一个Agent https nodejs org api http
  • 如何格式化数字? [复制]

    这个问题在这里已经有答案了 我想使用 JavaScript 格式化数字 例如 10 gt 10 00 100 gt 100 00 1000 gt 1 000 00 10000 gt 10 000 00 100000 gt 100 000 0
  • JavaScript 节点列表

    有没有办法连接 2 个 document getElementsByTagName 调用返回的 2 个 NodeList 比如说 我有以下代码 var inputs documentElement getElementsByTagName
  • JavaScript 中的异步事件处理

    我在防止双重 多重 方面遇到问题eventListener代码中的处理 var locked button addEventListener click function if locked return locked true calcu

随机推荐

  • Crashlytics 控制台显示加载程序、已启用 Crashlytics 且设置正确,但无法获取崩溃报告?

    我有一个具有两种构建类型的 Android 应用程序 一是Debug另一个是Release the issue我面临的是我的Debug Build正在向 Crashlytics 和我的发送崩溃报告Release Build不会向 Crash
  • Google App 脚本中的线程

    是否可以在 Google Apps 脚本中进行线程处理 目前我正在以编程方式设置触发器来执行线程 有没有更好的办法 布鲁斯 麦克菲尔森就是一个很好的例子 他的例子Apps 脚本中的并行处理 https ramblings mcpher co
  • 我在使用 m2eclipse 时遇到构建错误,但在命令行上使用 maven2 时却没有构建错误 - 是我的 m2eclipse 配置错误吗?

    我安装了 m2eclipse 在 Eclipse 中构建一个 java 项目 我导入项目如下 Import gt Maven gt Existing Maven Projects gt Import Maven Projects gt Se
  • Intellij 检查更新:无法连接

    下面的屏幕截图已经出现好几天了 其他人看到这个吗 注意 为了确保这不是一般的连接错误 除了能够发布此软消息之外 我还进行了 github pull 这有力地表明我的网络代理已被正确禁用 并且工作正常 所以这条消息令人费解 要解决此问题 选择
  • 为什么windbg命令以.开头或者 !

    之间有什么区别吗 和 WinDbg 中有不同类型的命令 常规命令 例如kb适用于调试会话 例如 显示堆栈转储等 元命令以点为前缀 例如 load 元命令适用于调试器本身 例如 加载扩展 显示帮助等等 扩展命令以感叹号为前缀 例如 analy
  • 通过克隆/推/拉传播远程位置

    我们的项目使用了几个第三方开源库 其中一些需要自定义修改 对于每个库 我们创建了自己的本地 git 存储库 并将原始源位置添加为vendor远程 从那里克隆 根据需要修改它并将其推送到内部远程存储库 我们称之为origin 然后 这些存储库
  • 从数组公式返回单个单元格

    我想从这个公式中获得一个值 即收盘价 GoogleFinance NASDAQ AAPL close 12 13 2012 1 1 相反 此公式填充 2 个标题行 日期 收盘价 然后填充两个值 日期和收盘价 529 69 有没有办法只返回收
  • android.hardware.camera2.CaptureRequest 可以与 OpenCV 一起使用吗?

    我已经为此工作好几天了 我有一个基于 OpenCV JavaCameraView 的项目 我正在尝试与 Android 集成android hardware camera2 CaptureRequest我用来控制相机对光的敏感度的对象 Th
  • 当尝试将重复对象插入集合时,正确的 .NET 异常抛出是什么?

    我有一个 Asset 对象 它有一个属性 AssignedSoftware 它是一个集合 我想确保同一个软件不会多次分配给资产 在 Add 方法中 我检查软件是否已存在 如果存在 我想抛出异常 是否有我应该抛出的标准 NET 异常 或者最佳
  • 将 pandas 0.13.0“打印数据帧”更改为像早期版本中那样打印数据帧

    在 pandas 的新版本 0 13 0 中 数据帧 df 使用以下命令打印在一长串数字中 df or print df 而不是像以前那样进行概述 现在只能使用 df info 是否可以更改默认的 df 或 print df 命令以显示 I
  • 将 youtube url 转换为 iframe 嵌入代码

    我一直在尝试找到一个正则表达式模式来用 iframe 嵌入代码 C 替换字符串中的所有 youtube URL 显然必须提取视频 ID 以下是应匹配的 url 模式 http www youtube com watch v bSiDLCf5
  • 调用异步任务

    我正在播放广播流 我想在流中的歌曲发生变化时生成通知 我正在使用streamscraper http code google com p streamscraper 来获取当前流的元数据 并且我尝试在元数据更改时生成通知 这是我为实现此目的
  • Firebase 存储同步上传

    我正在尝试上传到 GcmTaskService 内的 Firebase 存储 我想同步上传 但所有上传方法 putBytes putFile 都是异步的 我没有找到任何方法来等待上传完成 有什么办法可以同步上传吗 是的 如果您不在 UI 线
  • 返回关联 PHP 数组的前 n 个值?

    我有一个 PHP 数组 排序后如下所示 Array 542 gt 30 588 gt 29 77 409 gt 19 9 237 gt 19 47 457 gt 17 73 410 gt 15 86 实际的数组相当长 最初 按键按顺序设置
  • 用于分割 .csv 文件的批处理文件

    我有一个非常大的 csv 文件 gt 500mb 我希望在命令提示符下将其分解为较小的 csv 文件 基本上是试图在Windows中找到Linux 分割 功能 这必须是一个批处理脚本 因为我的机器只安装了 Windows 并且请求软件很痛苦
  • 确定扑克中的获胜金额而不创建边池

    我正在尝试运行扑克模拟并拥有有关扑克桌的以下数据 每个玩家为底池贡献了多少 每个玩家的 手牌得分 翻牌后 即 如果player 0 score player 1 score 他们并列 我一直在计算每个玩家应该赢得多少 而不需要创建边池并将玩
  • 使用 Vue.Js / Inertia.js 和 Laravel 对结果进行分页

    我正在尝试在 Vue Js 中对来自 Laravel 的数据进行分页 我也在使用 Inertia js 在我的 Laravel 控制器中 我有 data participants User with groups gt select id
  • Javascript:将值返回给回调函数外部的变量[重复]

    这个问题在这里已经有答案了 我有一个非常具体的问题 希望有人可以帮助我 我对 Javascript 很陌生 对 NodeJS 则更陌生 我在用lodash s forIn遍历并添加到数组内的对象的功能 整个事情看起来是这样的 id 20 k
  • Visual Studio 2022 无法构建任何项目

    每次我在 Visual Studio 2022 中构建任何项目时 我在构建输出中得到的都是 Build started 1 gt Build started Project ConsoleApp7 Configuration Debug A
  • 使用 socket.io 处理超大消息

    我有一个 nodejs 项目 它生成多个与套接字 io 通信的进程 该进程既发送数据又接收数据 有时在功能开发过程中 其他程序员可能会犯错误 导致我的套接字基础结构代码发送超过大小 X 例如 超过 500MB 的大消息 我正在寻找一种方法来