Node js - 创建持久的私人聊天室

2023-12-01

我最近读了很多关于 Node js 的文章,聊天功能看起来非常不错。然而,我见过的唯一的聊天示例基本上都是将聊天服务器广播到固定的 URL(如会议室)。是否可以部分使用node js来创建一个更像gchat的聊天客户端? - 在当前页面上弹出聊天窗口,然后在多个页面中持续显示。有人见过这样的例子吗?

如果没有,是否建议使用其他技术来实现此目的(我知道这已在其他问题中得到了回答)?

Thanks.


我会给你一个伪实现依赖jquery and now从解决方案中抽象出繁琐的 IO 和 DOM 操作。

// Server

var nowjs = require('now');
var everyone = nowjs.initialize(httpServer);

everyone.now.joinRoom = function(room) {
    nowjs.getGroup(room).addUser(this.user.clientId);
}

everyone.now.leaveRoom = function(room) {
    nowjs.getGroup(room).removeUser(this.user.clientId);
}

everyone.now.messageRoom = function(room, message) {
    nowjs.getGroup(room).now.message(message);
}

// Client

var currRoom = "";

$(".join").click(function() {
    currRoom = ...
    now.joinRoom(currRoom);
});

$(".send").click(function() {
    var input = ...
    now.messageRoom(currRoom, input.text());
});

now.messageRoom = function(message) {
    $("messages").append($("<div></div>").text(message));
};

我刚刚注意到,新版本的 nowjs (0.5) 已经构建了群组系统。这基本上可以满足您的需求。没有麻烦。

如果您愿意,可以删除 nowjs 依赖项并将其替换为 100/200 行代码。我将把它作为一个练习留给用户。

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

Node js - 创建持久的私人聊天室 的相关文章

  • 使用 Socket.IO 时如何访问会话标识符?

    我有一个聊天 我需要管理独特的连接 我四处搜寻 但我找到的解决方案似乎都已被弃用 那么 如何使用 Socket IO 获取套接字的会话 ID 我在用着Node js http en wikipedia org wiki Node js Ex
  • 在 jQuery DataTables 中的 Ajax 请求后在 td 中添加 html 元素

    我想在获得 ajax 响应后在 td 中添加 html 元素 结果将是这样的 tr td class mycus class span class mycus class2 XYZ span td td class mycus class
  • Ajax 如何在 JSF 上工作?

    我是 JSF 新手 但我对 ASP NET 及其 Ajax 功能有一些经验 我知道 JSF 有一些 Ajax 标签可以使用 Ajax 完成一些任务 但我想知道它是如何使用 Ajax 的 它使用 ASP NET 中的 ScriptManage
  • 使用 TFS 2015 运行 Jest 单元测试

    有人尝试将 jest 单元测试与 TFS 2015 集成吗 我尝试使用 Chutzpah 测试适配器 https visualstudiogallery msdn microsoft com f8741f04 bae4 4900 81c7
  • 以异步方式执行 Express res.render

    我有一个 Nodejs 应用程序 其中res renderExpress 方法以阻塞方式花费大约 400 毫秒 我如何处理它以非阻塞方式执行 我的 apache 基准测试需要 12 秒来执行大约 30 个并发请求 我如何以更好的方式实施这一
  • 同一页面上具有不同ajax源的多个DataTable

    我在一个页面上有几个表格 使用数据表 http datatables net 每个都需要有自己的 sAjaxSource 我似乎无法确切地弄清楚如何做到这一点 这是我拥有的最少代码 var oTable datatable dataTabl
  • at=错误代码=H12 desc=node.js中的请求超时。如何处理?

    2020 07 21T06 54 58 030920 00 00 heroku 路由器 at error code H12 gt desc Request timeout 方法 获取路径 食谱 主机 desolate beach 26163
  • 使用 jQuery 更改 CSS 类属性

    有没有办法使用 jQuery 更改 CSS 类的属性 而不是元素属性 这是一个实际的例子 我有一个 div 类red red background red 我想转班级red背景属性 而不是具有类的元素red分配的背景 如果我用 jQuery
  • json_encode 创建格式错误的 JSON 数据?

    我有一个 codeigniter 应用程序将一些数据从数据库返回到视图 我正在尝试将其作为 json 数据发送回来 问题是返回的数据格式错误 它看起来像这样 2 5 Admin1 2 10 Admin2 当我在 jsonlint com 上
  • Node.JS async.parallel 不会等到所有任务完成

    我在用异步并行 https github com caolan async并行运行两个函数 这些函数请求 RSS 源 然后 RSS 提要被解析并添加到我的网页中 但由于某种原因async parallel运行回调方法而不等待两个函数完成 文
  • AJAX 表单正在向自身提交?

    我不知道今晚发生了什么 但我似乎无法让 AJAX 工作 提交表单后 它会使用 URL 中的值刷新页面 我正在使用具有提交处理程序的验证插件 但它仍然会刷新 我以前用过这个方法 没有出现任何问题 看看这里的页面 让我知道您的想法 div cl
  • 函数不会等到 Promise 得到解决

    我正在开发一个简单的不和谐机器人 我正在尝试打印有关某个玩家的一些一般数据 我最近了解了 async await 并尝试将其实现到我的代码中 然而 它似乎不起作用 因为当我第一次触发此代码时 它会打印 null 但在后续触发时 它将打印正确
  • dyld:惰性符号绑定失败

    当我尝试运行时遇到一个奇怪的错误gatsby develop在新创建的 gatsby 项目中 这不应该与 gatsby js 静态站点生成器 有任何关系 因为我在不同的场合也遇到了相同的错误 当我跑步时gatsby develop在我的一个
  • 未捕获的 ReferenceError:未定义角度 - Mean.IO

    我已遵循安装步骤 http mean io docsmean io 但是当我浏览 localhost 3000 时 我得到一个空白页面 当我打开控制台时 我得到一个指向相同错误的文件列表 未捕获的引用错误 角度未定义 我的问题是类似的to
  • Rails 4 使用 ajax、jquery、:remote => true 和 respond_to 渲染部分

    使用 AJAX 动态渲染页面以响应提交的表单似乎很常见 其他类似的问题都没有集中于如何以一般方式做到这一点 我能找到的关于这个主题的最好的博客文章在这里 http www gotealeaf com blog the detailed gu
  • 构建:找不到“节点”的类型定义文件

    VS 2015 社区版 在家 npm 3 10 Angular 2 我试图在 ASP Net MVC 5 应用程序中获取 Angular2 设置 我开始使用的模板使用旧版本的 Angular 因此我更新了包引用 当我构建时 列表中的第一个错
  • 如何使用 javascript/jquery/AJAX 调用 Django REST API?

    我想使用 Javascript jQuery AJAX 在前端调用 Django Rest API 请求方法是 POST 但当我看到 API 调用它的调用 OPTIONS 方法时 所以 我开始了解access control allow o
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • npm install -g expo-cli 失败并显示“EPERM:不允许操作,取消链接 '...\adb.exe'

    我在运行时收到错误 npm install g expo cli 我尝试以管理员身份重新安装节点模块 但出现相同的错误 环境 Windows 10 节点版本 10 15 3 NPM版本 6 9 0 我预计安装会发生 但出现了这样的错误 np
  • Node.js 未处理的“错误”事件

    我编写了一个简单的代码并将其保存在文件 try js 中 var http require http var makeRequest function message var options host localhost port 8080

随机推荐

  • Firebase Firestore 易于记住的参考资料

    我们使用 Firebase Firestore 进行数据存储 当用户创建新房间时 我们希望引用易于记住 以便用户可以与其他用户共享房间 ID 代码 目前 Firestore 将创建一个唯一的引用 例如 DvfTMYED5cWdo5qIraZ
  • NHibernate - 通过不同的键多次 JOIN 到同一个表

    另一个 NHibernate JOIN 问题 我正在尝试通过不同的两个表连接一个表中的两个不同的属性 键 但我无法获得第二个 JOIN 属性 简化示例 我的课 namespace Domain public class Message re
  • 谷歌分析。增强的电子商务。产品展示次数限制

    有人知道增强型电子商务 Google Analytics 发送展示数据的限制吗 我发现奇怪的行为 谷歌限制发送超过 8KB 的数据 我使用数据层来发送电子商务数据 我的页面上有多达 100 个产品 我还使用 unicode 发送产品和类别名
  • 当子文档或集合完成创建时,不会触发 firestore OnCreate

    因此 我正在使用 flutter 和 firebase 构建一个聊天应用程序 每当两个新用户第一次开始互相聊天时 每当其中一个用户发送第一条消息时 我需要触发一个功能 这样我就可以将该信息存储在某处以显示稍后将其作为聊天记录提供给用户 曾经
  • 我不明白Oracle文档中的这一部分?

    你好 我是 Ankur 已经用 java 编码好几年了 我之前读过 Herbert Schildt 的 Head First Java The Complete Reference 最近我在这页中遇到了一个重大谬误 甲骨文文档注意部分说 如
  • 在react-native-pager-view(或任何其他)内动态更改内容

    我正在开发一个项目 我将在寻呼机视图中逐页显示某本书的详细信息和信息作为页面组件 该书包含 500 多个页面 所以我不能只创建 500 个页面组件 例如并将它们插入到寻呼机中 我想的是我可以获得一个特定的页面 仅在上一页和下一页旁边呈现其组
  • 画布不渲染以前的图像

    我有一个 asp net 网络应用程序 我使用 Web 套接字和 HTML5 canvas 将图像渲染到我的网页 这是 JS function setUpImageProc desktopImage onload function ctxL
  • WebKit 边框半径和过渡错误

    在 Google Chrome 的最新稳定版本 版本 31 0 1650 63 m 也包括 Canary 中 当涉及边框半径和过渡时 仍然存在错误 应用了边框半径的元素内的内容在动画结束之前不会被剪切 我已经设法通过转换 顶部 和 左侧 属
  • Chrome 在哪里存储 cookie?

    假设我使用以下命令设置了 cookiesetcookie 函数于PHP setcookie name foo false false 我可以在以下位置看到它 chrome settings cookies 但是 我找不到硬盘上存储的实际文件
  • PDFMiner 无法提取字体

    我正在使用 PDFMiner 将一些 pdf 报告转换为纯文本 并且我的一堆输入 pdf 只是输出了几行可识别的行 然后是一个 cid d 列表 有点像这样 检查报告 用户ID 4 用户ID 5 用户ID 6 用户ID 7 用户ID 8 用
  • 来自本地文件系统的 jQuery Ajax 请求(Windows file:///)

    我正在尝试执行 ajax 请求来获取内容 http localhost 在 Windows Wamp 服务器上运行 该脚本是从这样的地方运行的 file C my path index html 我只是使用标准 ajax 请求来尝试获取 l
  • 无法将正则表达式与 sed 匹配

    我正在尝试匹配一个模式 d x d x d x with sed没有运气 我正在运行的文件是这样的 name something version 0 0 1 description some desc main gulpfile js di
  • 如何在单选按钮组的 *ngFor 中设置最初选定的单选按钮

    Before我使用表单验证一切正常 我的单选按钮组 html 如下所示 div class form group row div
  • Pyglet 的 FPS 是显示器刷新率的一半

    我是 Pyglet 的新手 我编写了一个小程序 可以在屏幕上移动一个球 现在我很难建立 60 fps 的稳定帧速率 虽然 Pyglet 应该与我的显示器的 60Hz 刷新率同步 但 Pyglet 将我的 fps 设置为刷新率的一半 例如 当
  • 将 SSIS 包作为 SQLAgent 作业执行

    我有一个 SQL Server 2008 SSIS 作业 它执行一些 Win 32 exe 文件 当我通过 BIDS 在 Windows 2008 机器上 执行作业时 该作业运行良好 现在我已将包部署在 MSDB 数据库中 并尝试将包作为
  • Prolog算术语法

    如何定义a作为整数 浮点数 我想找到以下结果a b c d 10 where a b c d是整数并且 gt 0 这是一个简单 现代 纯 Prolog 非 CLP 库的解决方案 range X member X 0 1 2 3 4 5 6
  • 对 有效吗?

    以下是有效的 HTML 吗 我特别想知道的是
  • 在 Ruby 中使用数组联合运算符 |= 时,为什么必须在访问器上显式调用 self?

    以这个类为例 class MyClass attr accessor values uniq values def initialize value self uniq values default value self values de
  • 编辑 mongo.conf 后 MongoDB 状态失败(代码退出,状态 = 2)

    我正在尝试使用以下命令远程连接到我的 Google Cloud 服务器Robo 3T也连接MongoDB v4 0 11这样我就可以从窗口看到数据 我运行的是 Ubuntu 18 04LTS Minimal 为了启用 MongoDB 的远程
  • Node js - 创建持久的私人聊天室

    我最近读了很多关于 Node js 的文章 聊天功能看起来非常不错 然而 我见过的唯一的聊天示例基本上都是将聊天服务器广播到固定的 URL 如会议室 是否可以部分使用node js来创建一个更像gchat的聊天客户端 在当前页面上弹出聊天窗