关于实现网站“存在”的建议?

2023-12-14

理想情况下,我希望找到简单、轻量级的代码,允许连接到我的网站的所有 Web 客户端维护当前在线的其他人的实时状态。

我知道 ejabberd 可以做到这一点,但它还可以做很多其他事情,而且我更喜欢较小的代码占用量,这样我就可以自定义并了解其性能特征。

我喜欢 Node.js 的非阻塞特性,并且想知道是否有一个开源项目可以完成所有这些逻辑。

我还希望看到在客户端维护此模型的 JavaScript 实现。


对于实时状态,请使用套接字.io。每次有人连接时,将其添加到已连接的用户列表中。为了获得准确的统计数据,您需要跟踪用户会话。看http://www.danielbaulig.de/socket-ioexpress/

var onlineUsers = {};
var online = 0;

io.sockets.on('connection', function (socket) {
  onlineUsers[socket.handshake.sessionID] = socket.handshake.session;
  online = Object.keys(onlineUsers).length;
  socket.broadcast.emit('online', online);

  socket.on('disconnect', function () {
    delete onlineUsers[socket.handshake.sessionID];
    online--;
    socket.broadcast.emit('online', online);
  });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于实现网站“存在”的建议? 的相关文章

  • 将输入数据发送到node.js中的子进程

    我正在编写代码以在 Node js 环境中创建在线 C 编译器 使用spawn函数我创建了一个子进程 它将编译代码并执行它并将输出发送回用户 但我需要将输入发送到正在运行的 C 程序 我用了child stdin write data 用于
  • 如何从 JSON 创建 Mongoose 模式

    我是 mongodb nodejs 和 mongooseJS 的新手 最近 我一直在尝试为我的 JSON 创建猫鼬模式 endpoints a z poi location name a latitude 10 1075702 longit
  • 在 NodeJS 中运行 Conda 命令

    我无法使用以下命令运行 C onda 命令exec与我的 NodeJS 应用程序 var conda path miniconda3 bin conda var cmd conda path init bash conda path act
  • 使用 Typescript 实现 Express 控制器类

    我正在用打字稿做一个快速应用程序 路由器代码是 let user new User router get user test 用户类别是 export class User test req res next this undefined
  • 装饰器中间件模式的 Typescript 类型

    我正在考虑节点中间件 在各种框架中 通常 中间件会向请求或响应对象添加一个属性 然后该属性可供在其之后注册的任何中间件使用 此模型的一个问题是您无法进行有效的打字 为了进行演示 这里有一个此类框架的高度简化的模型 在这种情况下 一切都是同步
  • 调用 `app.close()` 时,Nest 找不到 Sequelize 元素

    我们有一个运行 Nest 8 0 8 的 Web 服务器 使用给定的模块设置 Module imports ConfigModule forRoot isGlobal true cache true validate load config
  • 当rest api应用程序服务器(express)和Angulars js应用程序在不同端口上运行时出现Cors问题

    我有用node js编写的rest api应用程序 express在端口3000上运行 而angularjs应用程序在同一服务器上的端口9001上运行 从 angularjs 应用程序调用 rst api 时 出现了 cors 问题 在re
  • DiscordJS中如何在没有缓存的情况下获取语音频道中的用户?

    我正在尝试让所有用户连接到我的服务器上的语音通道 当有人与机器人交谈时 general 我想让用户进去Voice Channel 1 我正在使用 Node 17 和 DiscordJS 13 这是我的代码 message guild cha
  • 如何将sinon间谍模块导出实用函数

    在 javascript ES6 中 我有一个实用程序模块 其中只包含一些函数 然后在文件末尾 我像这样导出它们 module exports someFunction1 someFunction2 someFunction3 然后我想为这
  • 将 JS 库 xml2js 与 Angular 2 结合使用

    我正在尝试在 Angular 2 带有 TypeScript 的 RC 1 Web 应用程序中使用 xml2js 作为 XML 解析器 但是我只收到一些错误并且没有有效的解决方案 这是我一步一步所做的 通过安装 xml2jsnpm inst
  • 从项目中的任何位置获取socket.io名称空间

    在我的 REST 调用和一些数据库插入之后 我想通过 socket io 向前端发出一个新的通知 如下所示 socket broadcast emit send notification notification 由于我执行此操作的函数是通
  • Nodejs 在路由器页面中包含 socket.io

    我有一个 Express Node 应用程序 并且我试图通过不在 app js 中包含所有 socket io 内容来保持代码整洁 我不知道解决这个问题的最佳方法 这是我最初的想法 感觉不是最干净的 app js var express r
  • jest 无限期挂起,不运行任何测试

    每次我运行 jest 时它都不会运行任何东西 我已经让计数器任意升高 我用 no cache 运行 jest jest debug 输出如下 configs automock false browser false cache true c
  • 如何在 Next.js 中正确使用 Mongoose 模型?

    我正在使用 TypeScript 和 MongoDB Mongoose 构建 Next js 应用程序 我在使用 Mongoose 模型时开始遇到错误 这导致它们在每次使用模型时都尝试覆盖模型 导致模型覆盖错误的代码 import mong
  • 如何以非root用户身份运行node.js?

    我正在运行一个 node js 服务器 它将服务端口 80 上的请求等 显然 这需要应用程序以 root 身份运行 在 Linux 上 正在看这个帖子 http syskall com dont run node dot js as roo
  • Apollo 服务器:将参数传递给嵌套解析器

    我的 GraphQL 查询如下所示 p1 property someArgs some value id nestedField id moreNestedField id 在服务器端 我使用 Apollo Server 我有一个解析器pr
  • 从 Promise 块返回函数值

    我正在尝试编写一个函数 使用 WebdriverJS lib 来迭代元素列表 检查名称并构建与该名称对应的 xpath 定位器 我这里简化了xpath定位器 大家不用关注 我在这里面临的问题是 1 调用该函数返回未定义 据我了解 这是因为
  • Windows - 启动时自动启动特定应用程序

    在 Windows 操作系统中开发信息亭应用程序 当机器启动时 必须依次发生 3 件事 Node js 服务器启动 包含 Web 应用程序的浏览器以 kiosk 模式启动 另一个客户端应用程序启动 是否有一个实用程序可以轻松完成此操作 或者
  • 如何在节点soap中查看请求和响应数据?

    我正在尝试使用肥皂API节点肥皂 https github com vpulim node soap 我的响应无法解析 我想知道如何查看控制台的请求和响应数据以简化错误查找过程 由于 Node Soap 使用请求库 因此可以通过以下方式对其
  • Google Analytics 服务器端授权获取页面浏览计数分析数据并将其显示在首页上的随机访问者

    如何显示您网页的访问者计数 而无需像 Google Analytics 那样登录或进行身份验证 我正在尝试实施 Google Analytics 服务器端授权来获取页面浏览计数分析数据并将其显示给首页上的随机访问者 我阅读了他们的文档并找到

随机推荐