ZMQ上下文不是从浏览器/ PHP发送数据,而是在CMD / CLI(Windows 10)中工作

问题描述 投票:0回答:1
通过命令行

调用post.php会将数据发送到我的Web套接字服务器。如果您通过浏览器调用相同的脚本,则不会。

此问题仅在我的本地计算机上发生。一旦使用相同的PHP版本/设置将其部署到Centos 7,它就可以在浏览器中正常运行。

1)将服务器绑定IP更改为0.0.0.0而不是127.0.0.12)更改了服务器和客户端端口

// This is our new stuff
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'my pusher');
$socket->connect("tcp://127.0.0.1:55555");
$socket->send(json_encode($entryData));

预期结果是在CLI / CMD上输出数据。这不是本地发生的。没有错误。

php zeromq
1个回答
0
投票

QZMQ Context未发送来自浏览器/ PHP的数据

就观察到的失望而言,自从2.11+以来,与ZeroMQ一起生活了一段时间,现在是some时间,我敢于对ZeroMQ Zen的设计与艺术说一个坏话-of-Zero。

鉴于您的MCVE代码甚至没有尝试收集和验证无错误状态,因此在运行时,很难在没有可用细节的情况下进行分析。

代替猜测,最佳下一步是:设置套接字-Monitor以查看所有活动直播

您的使用环境适用于tcp:// -transport-class,因此您很高兴能够衍生出一个套接字-[[Monitor] >>

事件库,套接字-[[Monitor

可以在实时会话中进行扫描/报告(如显示的那样),以便可以同时攻击任何expected行为(和事件的顺序),和/或检测任何unexpected事件-它们的出现:
ZMQ_EVENT_CONNECTED,
ZMQ_EVENT_CONNECT_DELAYED,
ZMQ_EVENT_CONNECT_RETRIED,
ZMQ_EVENT_LISTENING,
ZMQ_EVENT_BIND_FAILED,
ZMQ_EVENT_ACCEPTED,
ZMQ_EVENT_ACCEPT_FAILED,
ZMQ_EVENT_CLOSED,
ZMQ_EVENT_CLOSE_FAILED,
ZMQ_EVENT_DISCONNECTED,
ZMQ_EVENT_MONITOR_STOPPED,
ZMQ_EVENT_HANDSHAKE_FAILED,
ZMQ_EVENT_HANDSHAKE_SUCCEED

如何实例化ZeroMQ套接字-[[Monitor

ZeroMQ使用双面基础结构,其中第1部分)通过调用以下实例在Context()实例引擎内部“实例化”:int zmq_socket_monitor ( void *socket, char *endpoint, int events );

这将完成工作的前半部分-为Context()配备一个新的(内部,已向.bind() -transport-class配备已发布的内部inproc://AccessPoint

] >,因此可以从套接字的后半部分-[[[.connect()外部获取Monitor--基于外部ZMQ_PAIR-基于原型的事件侦听器(该角色扮演者)第2部分的基础设施只是第1部分的.connect() -s,其余部分由您自己承担。 API文档定义了有关通过此链接从被监视的Context()实例发送到监视监听器的手的多帧消息的所有详细信息。

鉴于上面定义的问题,此套接字-

[Monitor

确保可以反映所有ZeroMQ-ZMTP / RFC派生的事件,并使其按照自然顺序报告(如它们出现(如果它们出现),并且[Monitor-Listener可以使用精确到纳秒的时间戳标记每个标签,并在单独的(遥测专用诊断)GUI / CLI上显示它们。

[[[[zmq_socket_monitor()

方法使应用程序线程可以跟踪ZeroMQ套接字上的套接字事件(如连接)。每次对此方法的调用都会创建一个ZMQ_PAIR套接字,并将其绑定到指定的inproc://端点。要收集套接字事件,必须创建自己的[ZMQ_PAIR套接字,并将其连接到端点。events参数是您要监视的套接字事件的位掩码,请参阅下面的受支持事件。要监视所有事件,请使用事件值

[ZMQ_EVENT_ALL

NOTE:随着添加新事件,catch-all值将开始返回它们。依赖严格且固定的事件顺序的应用程序不得使用

[ZMQ_EVENT_ALL

,以保证与未来版本的兼容性。每个事件以两个帧发送。第一帧包含一个事件编号(16位)和一个事件值(32位),该事件值根据事件编号提供其他数据。第二帧包含一个字符串,用于指定受影响的TCP或IPC端点。对于示例监视器/解码器代码,可能是look here
© www.soinside.com 2019 - 2024. All rights reserved.