Websocket 多通道与单通道 + 服务器端处理 [GroupChat]

2024-02-11

假设我们想要创建私人聊天室,用户可以在其中进行小组聊天。一个用户可以加入多个/x组。在每种情况下,我都需要在服务器上创建一个唯一的组并向用户订阅这些组。哪种方法是推荐的/性能更高的方法:


[1] 在服务器端,我创建一个 Room 类并添加新房间channels对于每个群聊,例如“聊天/房间-asdhqk1”、“聊天/房间-fwuefhw1”、“聊天/房间-awsdhqwd2”。现在,一些指定的用户可以加入该频道并被添加到群组客户端列表中。在客户端,用户订阅他们添加到的组频道。

问题:当用户处于 x 个频道时,我需要在侧面加载后将他订阅到这些 x 个频道。 好:可以通过群组频道名称向特定群组广播,所有订阅该频道的用户都会自动收到消息,因为他们已经在js部分订阅了该频道。


[2] 每个用户都有自己的自有频道,例如“通知/用户1”,“通知/用户2”...。在服务器端,我在 Rooms 类中创建组(无通道)。通过将用户添加到房间列表的子列表,可以将用户添加到特定房间。当他们互相聊天时,服务器会迭代群聊的订阅用户,并向每个用户通知通道发送消息 - 这里根本没有群组通道 - 仅针对每个用户通道。

问题:我无法轻松广播消息,我需要迭代每个订阅用户并将消息发送到他的通知通道。另外,我无法使用前端的“发布”方法轻松地将消息发布到频道,因为用户分散在不同的频道中。

好:最后,广播方法会执行相同的操作:迭代订阅者列表。为了发送消息,我可以轻松实现与“发布”方法相同的 RPC 方法 - 查找组的订阅用户并将消息发送给他们。通过这种方法,用户不需要连接到客户端的 x 个通道,他只需一个处理所有通道的通道。

(我知道对于第二种方法,需要一个推动器(例如zmq)).


你有什么意见?我认为第二个更好,因为我不必让客户端的用户订阅 x - 频道。如果用户需要首先连接到例如500 个频道。

Regards.


None

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

Websocket 多通道与单通道 + 服务器端处理 [GroupChat] 的相关文章

  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码
  • 如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

    有谁知道如何使用配置文件 ebextensions 在 AWS Elastic Beanstalk 上安装和启用 PHP IMAP 扩展 我使用的是 64 位 Amazon Linux 2017 03 v2 4 0 运行 PHP 7 0 1
  • MySQL 和 PHP 参数 1 作为资源

    好吧 当我运行下面提到的代码时 PHP 向我抛出此错误 在日志中 Error mysql num rows 期望参数 1 为资源 第 10 行 place 中给出的字符串 9 11号线 queryFP SELECT FROM db coun
  • 将 OAuth WRAP 访问令牌直接保存在客户端计算机上的 cookie 中吗?

    我计划建立一个可以访问 oauth 包装框架的网站 我正在考虑将访问令牌按原样存储在客户端计算机上 我不想在服务器上维护临时令牌等数据库 我应该做吗 或者我应该加密它 首先 为什么他们不使用 OAuth 2 0 您可以将 OAuth 凭据存
  • 发送变量后的 wsdl 服务响应,php

    我是 SOAP WSDL 函数的新手 我有一位客户从一家从事汽车测试的公司获得了 wsdl 文件 我的客户是他们的分包商 他们告诉我们上传有关车牌 类别等信息 一旦详细信息发送完毕 服务器就会做出成功或失败的响应 请您协助 浏览不同的信息
  • PHP:将多字节字符串(单词)拆分为单独的字符

    尝试使用 mb split 将这个字符串 主楼怎么走 分割成单独的字符 我需要一个数组 但没有成功 有什么建议吗 谢谢你 例如 尝试使用带有 u 选项的正则表达式 chars preg split u string 1 PREG SPLIT
  • 无法在jspdf中加载多个图像

    我正在尝试加载动态生成的多个图像 我想将这些图像转换为 PDF 格式 HTML 代码如下
  • 自定义帖子类型的 WordPress 自定义字段

    过去有几个人出现过这个问题 但他们的问题的解决方案对我来说不起作用 我已经尝试了很多 在 WordPress 中 我创建了 3 种自定义帖子类型 1 代表 视频 新闻 和 音乐 每个内容都发布到自己的页面 我想添加自定义字段 这样我就可以为
  • Laravel - 急切加载 Eloquent 模型的方法(而不是关系)

    就像我们可以急切加载 Eloquent 模型的关系一样 有没有办法急切加载不是 Eloquent 模型的关系方法的方法 例如 我有一个 Eloquent 模型GradeReport它有以下方法 public function totalSc
  • 切换到 mysqli 是个好主意吗?

    我正在考虑为我的所有 php 项目切换到 mysqli 我的代码编写方式 我运行非常简单的网站并构建了自己的基本框架 我在所有网站上使用该框架 我在修改函数和类时不应该遇到太多问题 然而 我只听说过关于准备好的语句的积极的事情 除了一些关于
  • Laravel/00webhost 错误 404。在此服务器上找不到请求的 URL

    1 将我的文件上传到 000webhost 我将公用文件夹中的所有文件放置到公共 html然后我创建了一个名为laravel我在那里上传了所有其他文件 这是我的目录结构 laravel app 引导程序 config 公共 html 索引
  • yii2 中的自动完成

    在 Yii2 中 我希望当用户开始输入时 我的输入字段之一能够自动完成 下面是我的代码 它使用Jui Autocomplete 这是行不通的 当我打印我的数组时 我就像 Array 1 gt abc 2 gt xyz 4 gt pqr
  • PHP-docker容器中的环境变量

    我想在我的 docker 容器中显示一个环境变量 PHP 脚本如下所示 我使用 OpenShift 来启动容器 PHP 容器显示 env is 现在我更改容器的 dc 配置 oc env dc envar USER Pieter deplo
  • PHP 脚本不断执行 mmap/munmap

    我的 PHP 脚本包含一个循环 它只不过是回显和取消引用指针 如 tab othertab i gt 中的内容 直到昨天 这个脚本开始变得非常慢 比以前慢了 50 倍 之前 它一直运行良好 使用 strace 后 我发现 90 的情况下 脚
  • 使用 yum 和 pear 安装 php-soap 均失败

    我正在尝试在 Centos 6 4 服务器上安装 PHP 的 SOAP 扩展 我对包管理器 从 CLI 安装包并在 PHP 中配置它们相当不熟悉 我相当有能力管理 php ini 和其他 PHP 配置文件 soap ini 等 我尝试使用以
  • 扩展构建器中的“映射到现有表”显示 TYPO3 中的奇怪问题

    在我的扩展中MyExt 我映射了模型Page to pagesTYPO3 中的表 首先它向我展示了type mismatch错误 无论如何我继续保存它 会发生以下情况 我的页面树变成这样 我的新记录表单仅显示 UID 而不显示标题 My P
  • 在 PHP 中接受带有小数点和千位分隔符的国际数字

    对于用户可以输入能量值来计算相应费用的在线计算器 我需要 PHP 脚本来接受各种用户输入 200 万又四分之一焦耳 的值可以输入为 2000000 25 默认表示法 2 000 000 25 带千位分隔符 2000000 25 逗号作为小数
  • PHP 共享标头而不使用服务器端脚本?

    到目前为止我总是通过 PHP 解决简单的问题 您有一个包含页眉 菜单 页脚和内容字段的网站 每个页面的页眉 菜单和页脚通常是相同的 在没有 PHP 或任何其他服务器端语言的情况下 如何使页眉 菜单和页脚数据仅存在于一个文件中 例如 您不会有
  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib

随机推荐

  • 以编程方式将 SVG 形状转换为路径(lineto、moveto)

    我有一个来自 Inkscape Illustrator 或任何其他应用程序的 SVG 文件 我想将形状转换为lineto moveto curveto format 我想要的是这样的 Appname svgfile outfilewithp
  • Spring boot 中 /* 和 /** 模式有什么区别?

    当我发现过滤器之间存在差异时 我试图为过滤器注册某些 URL and 模式 Bean public FilterRegistrationBean tokenAuthenticationFilterBean FilterRegistratio
  • SQL查询获取另一个表中多行的行数

    在我的应用程序中 我有一组可以在列出资源时应用的过滤器 这些过滤器通过在执行查询之前添加 WHERE 子句等来构建查询 这是使用 SQL Server 2008 我有两个相关的表 一个包含有关资源的一些静态数据 另一个可以包含与该资源相关的
  • if 语句中的结构体初始化

    我想检查结构是否为空 即它的所有字段是否都设置为其默认值 以下内容按预期工作 package main import fmt type MyStruct struct field1 string field2 int func main v
  • R coxph() 警告:Loglik 在变量之前收敛

    我在使用 coxph 时遇到一些问题 我有两个分类变量 性别和可能的原因 我想将其用作预测变量 性别只是典型的男性 女性 但可能的原因有 5 个选项 我不知道警告消息有什么问题 为什么置信区间从 0 到 Inf 并且 p 值如此高 这是代码
  • jQuery Deferred 的 $.when() 和 failed() 回调参数

    使用时我得到了意想不到的结果 when 当其中一项延迟操作未成功时 以这个 JavaScript 为例 它创建了 2 个延迟 第一个成功 第二个失败 var f1 function return Deferred function dfd
  • jQuery UI 对话框链接而不是按钮

    我喜欢添加一个按钮 默认支持 并链接 jQuery UI 对话框 如何在 jQuery UI 对话框中添加链接 就我而言 我喜欢有 保存 按钮和 取消 链接 提前致谢 您必须按照您想要的方式设置按钮的样式 但这会注入一个链接并绑定单击 甚至
  • 如何在zendframework2中使用partial

    在ZF1中 我们在layout phtml文件中使用类似的部分 this gt partial header phtml array vr gt zf2 我们如何在 ZF2 中做到同样的事情 这可以通过以下方式实现 echo this gt
  • Python 导入错误“DLL 加载失败”| Python

    我正在 IIS6 Web 服务器后面提供 Django 应用程序 测试服务器运行完美 但是当在 Web 服务器后面运行时 模块无法导入 我收到此错误 加载 pyodbc 模块时出错 DLL加载失败 找不到指定的模块 只是为了记录该模块是py
  • Stack Overflow 桌面通知如何工作?

    也许这是一个相当大且模棱两可的问题 在 Stack Overflow 聊天室中 有一个 启用桌面通知 按钮 当有人回复您时 系统托盘中会显示一些内容 这是通过什么机制起作用的 这一直让我很好奇 网站如何访问系统托盘 它使用Notificat
  • javascript 循环中的承诺或如何一对一调用函数

    我和 slimerjs 一起工作 所以我有一个包含 url 和函数 foo 的数组 它可以用一个 url 来制作一些东西 该函数返回 Promise 如果我做这样的事情就可以了 foo urls then foo orError then
  • “只读...”类型的参数不可分配给“...[]”类型的参数

    有一个类似的问题 但与我在这里发现的问题不同 类型的参数不可分配给 类型的参数 TS 2345 https stackoverflow com questions 54298051 argument of type is not assig
  • 如何在具有 Decimal 类型值的 pandas TimeSeries 上使用mean方法?

    我需要将 Python 十进制类型值存储在 pandas 中TimeSeries DataFrame目的 在 TimeSeries DataFrame 上使用 groupby 和 mean 时 Pandas 给我一个错误 以下基于浮动的代码
  • 将 ASP.NET MVC 混合到 ASP.NET WebForms 中

    由于某种原因 我的路由忽略了任何访问我的 MVC 页面的尝试 只是给了我 404 我有一个 WebForms 应用程序设置如下 虚拟目录 东西 所以我通常像这样访问我的网站 http localhost thing someFile asp
  • 为什么不总是使用 fpic(位置无关代码)? [复制]

    这个问题在这里已经有答案了 I read this https stackoverflow com questions 5311515 gcc fpic option在 PIC 上发帖 似乎使用 PIC 总是好的 无论何时它是 exe 静态
  • R 3.0.0 更新导致大量 2.x 软件包不兼容

    今天早上我在 Ubuntu 10 04 上更新了一些 R ubuntu 软件包 然后我尝试的第一个 R 脚本告诉我 Zoo 不是为 R 3 0 0 构建的 所以我这样做sudo R进而update packages ask F 假设它会使我
  • 如何使用 Jasmine 监视在另一个方法中创建的对象?

    给定以下代码片段 您将如何创建一个Jasmine http jasmine github io 2 0 introduction html spyOn测试以确认doSomething当你跑步时被呼叫MyFunction function M
  • Visual Studio Code 中的方法列表

    我最近开始使用 Visual Studio Code 编辑器 我真的很喜欢它 但是 对我来说 有一个关键功能我还没有找到 是否有一个方法列表 类似于 NetBeans 中的导航器或 Visual Studio 中的成员下拉列表 Yes th
  • 自定义 iPhone 返回键文本

    是否可以设置自定义返回键类型UITextField txtField setReturnKeyType UIReturnKeyDefault 我想用 SHARE 一词代替返回键类型 Thanks 没有 您可以获得操作系统中定义的返回键和键盘
  • Websocket 多通道与单通道 + 服务器端处理 [GroupChat]

    假设我们想要创建私人聊天室 用户可以在其中进行小组聊天 一个用户可以加入多个 x组 在每种情况下 我都需要在服务器上创建一个唯一的组并向用户订阅这些组 哪种方法是推荐的 性能更高的方法 1 在服务器端 我创建一个 Room 类并添加新房间c