Socket.IO:如何删除命名空间

2024-01-04

我需要能够即时构造和破坏 socket.io 命名空间。很容易找到如何创建名称空间的信息,但我没有找到有关如何删除/断开名称空间以释放其内存的信息。

假设我已经运行了以下代码:

var nsp = io.of('/my-namespace');
nsp.on('connection', function(socket){
  console.log('someone connected'):
});
nsp.emit('hi', 'everyone!');

如何断开/删除上面创建的 socket.io 命名空间?


正如下面一些人评论的那样,这仅适用于 Socket.IO 版本

实际上,只需从服务器中删除名称空间nsps数组,您将不会释放任何内存,并且套接字仍将保持连接,因为内存中仍然有指向命名空间的指针,因此它不会被垃圾收集...如果您想要的是完全清空资源,您应该

  1. 断开所有套接字与特定命名空间的连接
  2. 删除所有事件侦听器,因为它是 EventEmitter 扩展类
  3. 将其从服务器中的 nsps 数组中删除

例如

const MyNamespace = io.of('/my-namespace'); // Get Namespace
const connectedNameSpaceSockets = Object.keys(MyNamespace.connected); // Get Object with Connected SocketIds as properties
connectedNameSpaceSockets.forEach(socketId => {
    MyNamespace.connected[socketId].disconnect(); // Disconnect Each socket
});
MyNamespace.removeAllListeners(); // Remove all Listeners for the event emitter
delete io.nsps['/my-namespace']; // Remove from the server namespaces
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Socket.IO:如何删除命名空间 的相关文章

  • (节点:20732)[DEP0018] DeprecationWarning:未处理的承诺拒绝已被弃用。未来在nodejs中

    我正在尝试在我的应用程序中生成确认链接 虽然它工作正常并且也生成链接 但是当我访问该链接时 它在 Chrome 控制台中显示 POST http localhost 3000 api auth confirmation 400 Bad Re
  • 有什么不同? .on“连接”与.on“连接”

    我很难理解以下之间的区别 io on connection function io on connect function 可能是一个相当原始的问题 但是我无法找到有关它的明确文档 很想了解其中的区别 这些是同一事物的不同名称 正如所写so
  • NodeJs读取JSON文件

    我正在使用 NodeJs 读取 json 文件 我的代码非常基本 var obj require sample json console log obj 0 Sample json 文件包含这样的字符串化 JSON sample good
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 如何获取knex / mysql中所有更新记录的列表

    这是我正在处理的查询 return knex table returning id where boolean false andWhere fooID foo id update boolean true limit num then f
  • 如何从@google-cloud/storage读取文件?

    我正在从我的存储桶中检索文件 我收到该文件并想要阅读其内容 但我不想将其下载到我的本地项目 我只想读取内容 获取数据并用它进行其他操作 我的代码 export const fileManager async gt try const sou
  • 为什么我的 Mongoose 3.8.7 架构 getter 和 setter 被忽略?

    在使用 Node js Mongoose 和 MongoDB 时 我发现当我执行 findOne 查询时 我的 Mongoose 模式 getter 和 setter 不会触发 我发现一个旧线程表明 2 x 版本中的 getter 和 se
  • Node.js:读取 URL 中传递的参数

    在 Rails 中 我向服务器发出 POST 请求 response Typhoeus Request post http url localtunnel com request from ola to ole result JSON pa
  • 在 mongodb 和 nodejs 中对博客和评级进行建模

    我有一个博客集合 其中包含用户给予的标题 正文和综合评分 另一个集合 评级 其架构引用了博客 以对象 ID 的形式对博客进行评级 如果有的话 的用户以及他们给出的评级 即 1 或 1 当特定用户按照 最新优先 的顺序浏览博客时 比如每页 4
  • Node.JS async.parallel 不会等到所有任务完成

    我在用异步并行 https github com caolan async并行运行两个函数 这些函数请求 RSS 源 然后 RSS 提要被解析并添加到我的网页中 但由于某种原因async parallel运行回调方法而不等待两个函数完成 文
  • NodeJs 环境变量与配置文件

    实际上 我有一个 NodeJS Express 应用程序 其配置文件包含主机 端口 JWT 令牌 数据库参数等参数 问题是 将这些参数直接保留在环境变量上 没有任何配置文件 并访问它们 而不需要在所有组件和模块中进行 require 配置是
  • 动态更改温斯顿的日志级别

    我尝试在运行时实现日志级别更改 我一直在关注https github com yannvr Winston dynamic loglevel blob master test https github com yannvr Winston
  • 使用 Socket.io 向多个房间发送消息?

    是否可以使用socket io向多个房间发送消息 发送至 1 个房间 io sockets in room emit id 发送到N个房间 io sockets in room1 room2 roomN emit id 是的 可以同时发送到
  • node.js通过aws-sdk模块重命名s3对象

    是否可以通过重命名 s3 上的对象aws sdk https www npmjs com package aws sdk 我找不到解决方法 也许有一个临时解决方案 我想我会回答 因为没有人回答过 这个应该有用 create a new s3
  • dyld:惰性符号绑定失败

    当我尝试运行时遇到一个奇怪的错误gatsby develop在新创建的 gatsby 项目中 这不应该与 gatsby js 静态站点生成器 有任何关系 因为我在不同的场合也遇到了相同的错误 当我跑步时gatsby develop在我的一个
  • 我可以将 Dojo 名称空间更改为 dojo 以外的名称空间吗?

    我知道你可以使用 jQuery noConflict 为 jQuery 做到这一点 有没有办法用Dojo做类似的事情 我相信你可以 看这一页 http dojotoolkit org reference guide quickstart m
  • React-Native 打包器失败:模块名称重复

    这在开发过程中似乎是随机发生的 当尝试跑步时npm start or react native run ios 我收到以下错误 Failed to build DependencyGraph providesModule naming co
  • 一次更新猫鼬中的多个文档

    我有一个用户文档数组 每个用户都有关注者属性 它是一个数字 我只想将此属性增加 1 然后立即更新数据库中的所有这些用户文档 更多细节 在请求中 我有一组用户 id 我使用这些 id 进行查询以获取一组用户文档 const users awa
  • Nodejs - 检查隐藏文件

    我正在迭代文件目录 想知道是否可以测试文件是否隐藏 目前 我只是检查文件是否以 开头或不 这适用于 Mac 也许还有 Linux 但是 我想知道如何在 Windows 上做到这一点 另外 句点会在所有版本的 Linux 中隐藏该文件吗 Th
  • 尝试通过 Google Drive API 创建权限时出现错误“需要权限类型字段”

    我改编了 Google Drive API Quickstart for Node js 中的代码 发现here https developers google com drive v3 web quickstart nodejs 20 2

随机推荐

  • 控制器可以进行数据库查询(MySQL)吗?如果是,什么时候?

    我正在阅读大量有关 MVC 的教程 所以我的问题是 一个完美的 PHP MVC 框架可以在控制器中进行数据库查询吗 据我了解 最舒服的方法是将所有数据库查询放在模型中 对吧 如果我有 POST 或 smth 我只需将该 POST 传递给 M
  • npm 开始在 node.js 中给出错误

    我对 Node js 和 mongodb 完全陌生 我正在使用以下链接 http cwbuecheler com web tutorials 2013 node express mongo http cwbuecheler com web
  • Cython:内存视图的大小属性

    我在 Cython 中使用了很多 3D 内存视图 例如 cython declare a double 1 a np empty 10 20 30 dtype double 我经常想循环遍历所有元素a 我可以使用像这样的三重循环来做到这一点
  • Javascript IE 错误:“目标”为 null 或不是对象

    document onkeydown function event var tagName event target tagName if tagName INPUT tagName TEXTAREA event alt event con
  • 带有改造的自动完成文本视图

    我正在使用一个实现AutoCompleteTextView其中建议是从 webapi 获取并根据用户输入显示的 我正在使用改造客户端进行网络连接 我有两个疑问 1 我不希望为每个键入的字符发送请求 仅当用户按住 5 秒时才发送请求 我怎样才
  • 后台并发复制GC释放 - Flutter

    在我的 Flutter 日志中 我不断收到以下消息 只是有一些不同的数字 Background concurrent copying GC freed 153040 3MB AllocSpace objects 12 4MB LOS obj
  • 从缓存加载网页视图

    我需要当可以访问互联网时从互联网加载 mWebview 当它不可用时 它需要从缓存加载它 我有一些东西 但它根本不加载网站 请帮我 权限 ive 已添加 android permission INTERNET android permiss
  • 为 url 编码西里尔字母的最快方法

    如果您将以下链接复制到浏览器中 http be wikipedia org wiki 它将显示 Wiki 文章 但是 一旦您想要将该链接 或任何其他包含西里尔字母符号的链接 从浏览器 URL 复制到记事本中 您将得到如下内容 http be
  • 詹金斯管道:无法将构建参数传递给共享库变量

    基本上我无法将构建属性传递给 Library var 调用而不需要额外的废话 jenkinsfile 相关块 tc test repo test1 folder test2 submodules true refs params GitCh
  • Ruby before_validation 触发无限循环回调

    产品模型有一个属性 1 如果 attribute 1 需要重新计算 则 before validation 将调用 它给予SystemStackError stack level too deep因为self save 触发before v
  • 如何在两个 MapReduce 作业之间传递变量

    我已经链接了两个 Map reduce 作业 Job1 将只有一个减速器 我正在计算一个浮点值 我想在 Job2 的减速器中使用这个值 这是我的主要方法设置 public static String GlobalVriable public
  • 多个文件的预签名 URL?

    我已经编写了一个实现 用于为 aws s3 上的存储桶生成预签名 URL 它工作得很好 可以获取单个文件 对象 我该如何为整个目录生成预签名 URL 这么说吧 在我的 s3 存储桶上 有多个文件夹 它们都有自己的小型 html5 应用程序
  • 命名空间“System”中不存在类型或命名空间名称“Transactions”[重复]

    这个问题在这里已经有答案了 这是使用 Visual Studio 2013 的 ASP Net Web 应用程序 该解决方案由多个项目组成 我在一个图书馆项目中有代码using System Transactions 几个月来效果很好 今天
  • 如何在 Perl 6 中打开字符串上的文件句柄?

    在 Perl 5 中 我可以像这样打开字符串上的文件句柄 open my kfh lt message gt payload 我有一个使用字符串作为文件句柄并将其传递给open method my fh new IO Zlib open m
  • 是否可以将 proguard 与 Grails 一起使用

    即使不可能对整个 Grails 应用程序使用 proguard 是否可以将其仅用于 src java 文件夹 我不深入了解 Proguard 或 Grails 但我确实知道 Grails 使用 Groovy Groovy 编译为字节码 混淆
  • Capistrano 无法创建符号链接:文件存在

    我有 Rails 4 应用程序和 Capistrano 3 deploy rb set application
  • 加载属性文件 Maven 时出错

    当我尝试从 pom xml 加载过滤器文件时 我从 eclipse 标记中收到此错误 它显示以下消息 Error loading property file src main filters filter properties org ap
  • 使用 matplotlib 并排绘制图像

    我想知道如何使用并排绘制图像matplotlib例如这样的事情 我得到的最接近的是 这是使用以下代码生成的 f axarr plt subplots 2 2 axarr 0 0 plt imshow image datas 0 axarr
  • windows下EOF的值

    我写了这段代码 include
  • Socket.IO:如何删除命名空间

    我需要能够即时构造和破坏 socket io 命名空间 很容易找到如何创建名称空间的信息 但我没有找到有关如何删除 断开名称空间以释放其内存的信息 假设我已经运行了以下代码 var nsp io of my namespace nsp on