React/ZMQ/Ratchet - Websocket 服务器响应

2023-12-28

我目前已经有一个正在运行并使用 Ratchet PHP 的 Web 套接字服务器。我还没有处于希望外部脚本与我的服务器进行通信的阶段。我可以使用 ZMQ 成功地将数据推送到它:

push.php

$json = ['name' => 'Joe Bloggs'];

$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'Push Notification');
$socket->connect("tcp://localhost:5555");

$socket->send(json_encode($json));

然后在我的网络服务器脚本中我可以将其发送到一个方法(onNewPush)在 Push.php 文件运行(运行?)时用它做一些事情:

...
$push = $context->getSocket(ZMQ::SOCKET_PULL);
$push->bind('tcp://127.0.0.1:5555');
$push->on('Push Notification', array($pusher, 'onNewPush'));
...

所以这工作正常,但我在尝试收到回复时遇到困难。我正在尝试类似的事情:

pull.php

$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_REQ, 'Pull Notification');
$socket->connect("tcp://localhost:5554");

$socket->send('data');

echo $socket->recv();

然后在我的服务器脚本中:

$pull = $context->getSocket(ZMQ::SOCKET_PULL);
$pull->bind('tcp://127.0.0.1:5554');
$pull->on('message', array($pusher, 'onPull'));

My $pusher变量加载我的文件,该文件实现了一些棘轮接口。但本质上我只是返回一个字符串:

public function onPull()
{
    return "some data";
}

跑步时pull.php我收到错误:

Fatal error: Uncaught exception 'ZMQSocketException' with message 'Failed to receive message: Not supported' in websockets\pull.php:9 Stack trace: #0 websockets\pull.php(9): ZMQSocket->recv() #1 {main} thrown in websockets\pull.php on line 9

有谁知道为什么?

另外第二个参数的重要性是什么getSocket()有?看起来就像是一个永远不会再使用的字符串。

Cheers

UPDATED


在你的 pull.php 文件中,你有一个REQ连接到一个套接字PULL插座。查看文档 http://api.zeromq.org/2-1%3azmq-socket查看兼容的套接字对。特别是,您似乎想要一个REQ-REP配对,以便您的客户端可以请求数据并且您的服务器可以回复响应。你会用PUSH-PULL如果您的服务器将数据排队等待下一个客户端,然后您的客户端从队列中提取下一个数据。

无论哪种情况,您都无法连接REQ插座到一个PULL插座或PUSH socket.

我没有从列出的代码或命名方案中完全理解您的用例或通信架构,所以我不知道我能提供多少比这更多的细节,请随意澄清发生了什么,我也许可以提供建议更明确地表明您应该使用哪种套接字策略。

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

React/ZMQ/Ratchet - Websocket 服务器响应 的相关文章

随机推荐

  • 有没有办法使用 Visual Studio Code 查看 git diff 与 origin/master 的差异?

    使用 Visual Studio Code 版本 1 11 2 我可以通过单击源代码控制左侧面板中的按钮 但是 一旦我将这些更改提交到本地存储库 我就无法找到一种方法来查看与 origin master 相同的并排差异 换句话说 有没有办法
  • ReentrantLock.lock() 不会阻塞其他线程

    我很难理解 ReentrantLock lock 的行为 我有以下课程 import java util concurrent locks class BlockingClass private Lock lock new Reentran
  • 休息框架“元组”对象没有属性“_meta”

    Django 抛出下一个异常 休息框架 元组 对象没有属性 meta Model class BDetail models Model lat models FloatField blank True null True lng model
  • 如何批量更改系统区域设置

    所以我试图制作一个 kirikiri 日本虚拟小说创作者 但除非系统区域设置是日语 否则小说不会运行 我知道如何手动完成 但我想创建一个批量写入的程序来加快速度 您可以从像这样的命令行 http www oracle com technet
  • Android MediaPlayer 已暂停,音量按钮无法控制多媒体

    我使用在 Internet 上找到的示例代码播放了示例音乐 mp3 代码是这样的 MediaPlayer mp new mp setDataSource mp setAudioStreamType mp prepare mp start 问
  • Chrome、Firefox 和 Safari 中的 DOCTYPE 和 BackCompat 模式与 CSS1Compat 模式有何区别?

    我倾向于认为 如果没有DOCTYPE IE 将会出现问题 因为如果没有DOCTYPE 它会使用 IE 的盒子模型以 Quirk 模式渲染页面上的项目 我知道我们应该始终放入DOCTYPE 但这里的关键问题是 如果由于某种原因 当我们分析第三
  • 求解线性回归的梯度下降法和正规方程法给出了不同的解

    我正在研究机器学习问题 并希望使用线性回归作为学习算法 我实现了两种不同的方法来查找参数theta线性回归模型 梯度 最速 下降和正态方程 对于相同的数据 他们应该给出大致相等的theta向量 然而他们没有 Both theta除了第一个元
  • 无法确定元数据,因为语句“插入”

    我有一个 select 语句 其中创建了 2 个临时表 并在从这些临时表中获取数据之前插入 select 在它们之间创建联接 最终的选择就是我想要的元数据 在 ssms 中它运行良好 在 ssis 中我不知道为什么它会抛出该错误 查询是这样
  • jquery datatables actionlink如何添加

    我过去几个小时一直在搜索 不幸的是我似乎找不到如何使用 net 和 MVC 使用操作编辑和删除链接列填充数据表的示例 这是我到目前为止所拥有的 如何添加操作链接 我缺少什么 div div table table div div
  • Trie 与 B+ 树

    Trie 树和 B 树在索引按字典顺序排序的字符串时如何比较 大约数十亿 它也应该支持范围查询 从性能 以及实现复杂性的观点 我想说这取决于你的意思Range 如果你的范围表示为所有单词开头为 那么一个Trie我想说的是正确的选择 另一方面
  • Python Pandas - 手动分位数计算

    我正在尝试手动计算列值的分位数 但与 Pandas 的结果输出相比 无法使用公式手动找到正确的分位数值 我四处寻找不同的解决方案 但没有找到正确的答案 In 54 df Out 54 data1 data2 key1 key2 0 0 20
  • AIDL 在调试 APK 中工作,但在签名 APK 中不起作用

    我有 2 个 APK 我在其中共享数据AIDL 当我通过调试 apk 或构建 apk 安装它们时 AIDL工作正常 但当我创作的时候签名的APK对于具有不同密钥的两者 AIDL功能不起作用 有人遇到过同样的问题吗 请帮忙 Thanks 出于
  • 如何从点文件内向 gnuplot 中的每个点添加颜色

    Reading this https stackoverflow com questions 12427704 vary point color based on column value for multiple data blocks
  • 使用 Python 在 Selenium WebDriver 中获取 WebElement 的 HTML 源

    我正在使用 Python 绑定来运行 Selenium WebDriver from selenium import webdriver wd webdriver Firefox 我知道我可以像这样抓取一个网络元素 elem wd find
  • 将 .NET Standard 库添加到 4.7.1 lib 会增加大量引用,其中一些已损坏

    由于我需要导入针对 NET Standard 2 的库 因此我已将库升级到 NET 4 7 1 正如我从 MS 视频中了解到的那样 应该避免此问题 https www youtube com watch v u67Eu IgEMs http
  • malloc后如何获取内存块长度?

    我认为我无法像简单的那样检索分配的内存块的长度 lengthJava 中的函数 然而 我现在知道 当malloc 分配块时 它会分配额外的字节来保存包含块大小的整数 该整数位于块的开头 实际返回给调用者的地址指向刚刚超过该长度值的位置 问题
  • 在 java (JSP) 中将十进制 NCR 代码转换为 UTF-8

    我试图将 FARSI 字符串解码为 UTF 8 但后来我检查了浏览器本身将 FARSI 字符串转换为十进制 NCR 代码 我如何将十进制 NCR 代码转换为 UTF 8 String farMsg String finalMsg new S
  • JCarousel 和 Cufon 不合作:动画让 cufon 消失

    我将 cufon 与 jCarousel 一起使用 轮播中有五个项目 并从右向左旋转 换句话说 它们从屏幕向左旋转 你可以在这里看到它 http www foursquare org site test http www foursquar
  • 使用 Parse.com 解析 xml/HTML 字符串

    我需要解析 parse com 的云代码中的 XML HTML 文件 我有一个字符串 其中包含 html 文件的源代码 我已经尝试过 jsdom 等多个框架 但在 Parse com cloudcode 环境中似乎没有任何效果 例如 此代码
  • React/ZMQ/Ratchet - Websocket 服务器响应

    我目前已经有一个正在运行并使用 Ratchet PHP 的 Web 套接字服务器 我还没有处于希望外部脚本与我的服务器进行通信的阶段 我可以使用 ZMQ 成功地将数据推送到它 push php json name gt Joe Bloggs