Ratchet PHP - 推送消息服务

2024-04-06

我使用 Ratchet 查看的大多数示例都是针对聊天服务的,我目前正在构建一个应用程序,用户可以在其中登录并根据其用户 ID 从服务器接收通知。

我有基本的教程,但是我很难理解以下几点:

当。。。的时候onOpen()方法被调用,我设置了$conn对象放入数组中,如下所示:

$this->clients[$conn->resourceId]['conn'] = $conn;

在我的 Javascript 中,在onopen函数我还发送一个 JSON 有效负载send功能。我的服务器将其拍照并像这样存储在onMessage method:

$this->clients[$conn->resourceId]['json'] = $json;

所以现在我将连接的用户存储在一个数组中,如何向特定用户发送消息?我调查过onSubscribebroadcast没有用,但不太明白什么WampServerInterface应该用来做什么?

由于我自己的类是一个正在运行的脚本,因此我显然无法在其他任何地方创建它的新实例。由于我的应用程序将发送用户特定的更新,我需要某种方法来执行以下操作:

使用另一个脚本获取当前连接的用户,在某处处理这些用户并返回他们可能拥有的任何更新,每 60 秒一次。现在,虽然这听起来像轮询,但只有一个连接执行此操作,因此不会对服务器造成很大的负担 - 至少我是这么认为的。那么我如何才能将正在运行的服务器脚本与其他地方的其他“静态”PHP 脚本进行交互呢?

Thanks


The $conn参数是一个实现连接接口 https://github.com/cboden/Ratchet/blob/master/src/Ratchet/ConnectionInterface.php- 它有一个send()方法。这就是您向客户端发送消息的方式。

Ratchet(通过 React.PHP)也支持定时器 https://github.com/reactphp/event-loop/blob/master/src/LoopInterface.php。因此,如果没有外部依赖,您可以使用$loop->addPeriodicTimer()每 60 秒向每个客户端发送消息。

如果您需要根据某些外部依赖项(例如 Web 服务器请求或 cron 脚本)发送消息,请使用 ZMQ(棘轮文档 http://socketo.me/docs/push)。这很容易。

看看我的有关 PHP 中 WebSocket 的幻灯片 https://speakerdeck.com/ondrejmirtes/websockety-jak-na-real-time-aplikace-v-php。这些注释是捷克语的,但您可以找到有用的源代码示例。

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

Ratchet PHP - 推送消息服务 的相关文章

  • 计算Javascript中两次点击之间的时间

    我想用 javascript 计算属性的两次点击之间的时间 但我不知道如何 例如 a href click here a 如果用户单击多次 假设 5 秒内 我想显示警报 如果有帮助的话我正在使用 jQuery 我对 javascript 不
  • 在浏览器中语音聊天? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在寻求建立一个小组 voice 使用服务器上的node js 在浏览器中聊天 这可能吗 如果您希望您的解决方案是基于服务器端和客
  • 将一个文本框的内容复制到另一个文本框

    假设在文本框中输入了一个条目 是否可以在第二个文本框中保留相同的输入文本 如果是这样 这是如何完成的
  • 在 BIRT 中输入参数后更新数据集查询

    在 BIRT 报告设计中传递参数后 如何更改或更新数据集的查询 详细说明 我有一个如下所示的查询 WHERE 该参数标记可以保存不同的值 在用户输入参数后 它看起来像这样 例如 WHERE column name 1 or WHERE co
  • PHP函数返回值到html标签

    我想获取函数的返回值并将其显示到特定的id 在我的 Class php 中 我有一个名为 login 的函数 用于验证密码是否正确 不正确
  • PHP多图像文件上传并存储到文件夹和数据库

    我正在建立一个网站 向夜间狂欢者展示大城市夜总会场所和活动的列表 我正在尝试构建一个后端页面 管理员可以在其中添加俱乐部并输入信息 例如机构名称 位置 相对价格等 当然还有俱乐部的一些图像 每个俱乐部必须至少有一张图像 即主图像 可以有额外
  • 将音频与视频流合并 Node.js

    我正在创建 YouTube 视频下载器并且正在使用ytdl core库 它无法下载带有音频的高质量视频 因为 youtube 将其放在另一个文件中 但我需要将其全部下载到一个文件中 我已经这样做了 app get download asyn
  • phpstorm xdebug 与 symfony2 项目

    我正在尝试使用 xdebug 和 phpstorm 调试 symfony2 应用程序 我的本地开发环境是Ubuntu 14 04 with apache2 Xdebug版本是2 2 7 我在另一个 php 不是 symfony2 项目上使用
  • ElectronJS ReferenceError:导航器未定义

    我正在尝试在电子上制作自定义标题栏 但是当我启动我的应用程序时 我遇到了 ReferenceError 导航器未定义 问题 请帮忙 这是我的 main js 中的代码片段 My Codes https i stack imgur com c
  • 保存/导出Chrome的JavaScript控制台输入历史记录

    无论如何 我可以保存或导出 JavaScript 控制台的历史记录吗 input 控制台历史记录 在 Google Chrome 中 我不想保存输出或错误 因此将鼠标悬停在控制台框上 右键单击并选择Save as 不是解决方案 我不想每次都
  • 如何使用 jQuery 向表中添加新行,并为其分配递增的 id

    我有一个现有的 HTML 表格 它是用户输入 GPS 点的表单的一部分 用户还可以选择上传 GPS 数据点 我想要一个用户可以按下的按钮 其中一些 Javascript 会向表中添加一个或多个新行 但新行必须继续增加表中使用的名称和 id
  • AJAX:检查字符串是否为 JSON?

    我的 JavaScript 有时会在这一行崩溃 var json eval this responseText 当争论时会导致崩溃eval 不是 JSON 在进行此调用之前有什么方法可以检查字符串是否为 JSON 我不想使用框架 有什么方法
  • 访问 TypeScript 数组的最后一个元素

    TypeScript 中有访问数组最后一个元素的符号吗 在 Ruby 中我可以说 array 1 有类似的东西吗 您可以通过索引访问数组元素 数组中最后一个元素的索引将是数组的长度 1 因为索引是从零开始的 这应该有效 var items
  • Flux + React.js - 操作中的回调是好还是坏?

    让我解释一下我最近遇到的问题 我有 React js Flux 驱动的应用程序 有一个列表显示文章数量 注意 应用程序中有多个不同的列表 和文章详情查看在里面 但每个列表只有一个 API 端点 它返回文章数组 为了显示我需要的详细信息fin
  • 使水平滚动条始终可见,即使底部不在视图中

    我将用一个片段来开始这个问题 该片段几乎显示了我想要完成的任务 wrapper overflow hidden display flex sidebar min width 200px background 333 color FFF co
  • React无限滚动scrollableTarget动态获取id?

    我在我的项目中使用react infinite scroll component 如何让scrollableTarget动态获取item id 我试过这样scrollableTarget item id 但它不起作用 必须与该 div 具有
  • 通过复选框选择多行时出错错误未定义索引:复选框

    我想从中选择多行checkbox并想通过单击按钮立即更新它们 我尝试了多种方法 但不起作用 你能帮忙吗 它显示错误为Undefined index checkbox td td
  • 表单提交后显示 $_FILES['image']

    提交表单后如何显示上传的图片 提交表单后 它将是一个预览页面 因此我不会在 MySQLet 中存储图像类型 BLOB 如何显示 FILES image
  • 您如何看待引导模式触发器的相应回调?

    On 引导模态 http getbootstrap com javascript modals 我们知道我们可以为触发器绑定事件 例如show or hide using show shown hide hidden 但此事件绑定仅适用于一
  • Restangular - _.contains() 不是一个函数

    如果您最近通过 Bower 更新了 Restangular 它将安装最新的 Lodash 新的 4 0 然而 这是一个问题 因为 Restangular Angular 现在会抛出错误 contains 不是函数 你怎么解决 解决方案非常简

随机推荐

  • UITableView 中的图像不断重新加载,并且滚动时错误的图像会闪烁

    我创建了一个 UITableView 它根据 URL 请求填充每个单元格 我使用 dispatch queue 来防止 UItableView 冻结 由于某种原因 当我滚动 UITableView 时 图像会闪烁并消失 并填充错误的单元格一
  • 如何循环遍历表来查找数据集?

    我必须找到订单生命周期的时间差 以分钟为单位 即每个订单从收到订单 活动 ID 1 到键入 2 到打印 3 到交付 4 的时间 for eg 我完全迷失了我应该采取哪种方法 用例或 if then 语句 类似于 for every 循环遍历
  • 如何获取多列的groupby总和

    我有一个 pandas 数据框 如下所示 index col1 col2 col3 col4 col5 0 a c 1 2 f 1 a c 1 2 f 2 a d 1 2 f 3 b d 1 2 g 4 b e 1 2 g 5 b e 1
  • C# 中的 MongoDB 地理空间索引

    我一直在尝试使用 C 官方驱动程序创建和查询 MongoDB 但一次又一次地遇到同样的问题 问题是如何用地理信息创建数据 我只是找不到答案 Code MongoUrl url new MongoUrl mongodb xxx xx x xx
  • Docker:打开/certs/domain.crt:权限被拒绝

    我正在尝试设置一个私人 docker 注册表 我正在使用我自己生成的证书 但我的注册表的 docker 日志显示此错误 time 2015 12 08T08 51 54Z level fatal msg open certs domain
  • 使用 MutationObserver 比较新旧文本内容

    我需要比较更改发生之前和之后元素子级内的文本 我可以使用下面的脚本触发函数并返回新值 但我还需要能够访问旧值 changeButton click function var currentValue parseInt changingEle
  • 使用 WPF 实现平滑文本动画(选取框)

    尝试构建具有流畅文本动画的选取框控件 目前的努力包括 使用平移变换 在 Canvas 依赖属性上使用动画 左 右 在自定义依赖属性 点 上使用动画并使用绘图视觉效果 格式化文本 使用 CompositionTarget Rendering
  • 查找到目的地的旅行时间相同的位置:基于运输时间的热图/等值线(反向等时等值线)

    Note 解决方案r questions tagged r or python questions tagged python是所期望的 我正在尝试根据运输时间绘制轮廓 更清楚地说 我想将具有相似旅行时间 假设为 10 分钟间隔 的点聚集到
  • 看板/Scrum 板 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我很好奇其他人在他们的公司中使用什么物理看板 Scrum 板 我理解 由于敏感的商业信息 您可能无法提供董事会的照片 我正在寻找答案你
  • 监控内核注册表更改

    人们能否给我指点 没有双关语 我需要研究的主题才能做到这一点 我并不是真正的 Windows 专家 但我很快就能掌握新概念 我看到了 Mark Russinovich 和 Bryce Cogswell 编写的进程监控程序 http tech
  • 字符串交换适用于 char **,但不适用于 char *

    在这个程序中我交换了前两个名字 include
  • 使用 where 子句的慢查询

    我有以下 sql 查询 只需 1 秒即可执行 select a date b rate c type a value from a inner join b on a id b aid c inner join b id c bid whe
  • 强制

    我在网上看到了很多实现此目的的方法 但我尝试过的所有方法要么会破坏页面上的其他 CSS 要么无法一起工作 在本页http www psyklopz com workbench http www psyklopz com workbench
  • 使用 JavaScript 验证电子邮件地址文本框

    我需要验证用户从文本框出来时输入的电子邮件地址 我已经用谷歌搜索了这个 但我得到了表单验证 JScript 我不需要表单验证 我想要文本框验证 我在 JScript 下写了 但 如果电子邮件无效 则不会返回同一页面 function val
  • 如何使用 Cocoa 或 C++ 在 Mac OS X 中截取屏幕截图

    如何在 Mac OS X 中以编程方式截取桌面区域的屏幕截图 我见过两个有趣的选项 但尚未专业使用 它们是屏幕捕获实用程序和 MacFuse 演示 根据手册页 屏幕捕获实用程序从 10 2 开始就已经存在 并且可以通过使用 NSTask 链
  • 以编程方式配置 Log4NetLoggerFactoryAdapter

    我正在使用 NUnit 来测试一个项目 我想配置我的测试以编程方式设置 Common Logging 以使用 Log4Net 这是我尝试过的 NameValueCollection config new NameValueCollectio
  • 为什么分叉我的进程会导致文件被无限读取

    我已经将整个程序简化为一个简短的主程序来复制该问题 所以请原谅我它没有任何意义 input txt 是一个文本文件 其中包含几行文本 这个简化的程序应该打印这些行 但是 如果调用 fork 程序就会进入无限循环 一遍又一遍地打印文件的内容
  • 如何使用 React-Native-FS 进行 mkdir

    我正在尝试向我的 RN 应用程序添加功能 该功能将允许用户在手机的文件系统中创建新目录 我尝试编写代码 以便该函数在路径 storage emulated 0 AppName NewFolder 中创建一个目录 因为 storage emu
  • Java 相当于 session_start()、session_destroy() 和 $_SESSION['username']

    在 PHP 中 当用户登录她的帐户时 我会执行以下操作 以便在用户浏览网站时记住该用户 session start SESSION username username 在可能需要敏感数据的任何其他页面上 我检查 SESSION userna
  • Ratchet PHP - 推送消息服务

    我使用 Ratchet 查看的大多数示例都是针对聊天服务的 我目前正在构建一个应用程序 用户可以在其中登录并根据其用户 ID 从服务器接收通知 我有基本的教程 但是我很难理解以下几点 当 的时候onOpen 方法被调用 我设置了 conn对