具有 NodeJS 订阅者的 ZMQ 发布服务器

ZMQ publisher server with NodeJS subscriber

本文关键字:ZMQ 服务器 NodeJS 具有      更新时间:2023-10-16

我要做的是拥有一个具有发布者角色的C++ ZeroMQ 服务器并连接 NodeJS 订阅者客户端。

我能够让 nodeJS 服务器 + nodejs 客户端示例正常工作,但我无法使用 C++ 连接它。

C++代码:

#include "zmq.hpp"
//  Convert string to 0MQ string and send to socket
auto s_send(zmq::socket_t & socket, const std::string & string) {    
zmq::message_t message(string.size());
memcpy(message.data(), string.data(), string.size());
return socket.send(message, zmq::send_flags::none); 
}
int main() {
std::cout << "Hello World!n"; 
zmq::context_t ctx(1);
zmq::socket_t sock(ctx, ZMQ_PUB);
sock.bind("tcp://*:5555");
Sleep(1000);
while (true) { 
s_send(sock, "Hello from the publisher.");
Sleep(1000);
}
}

NodeJS代码:

var zmq = require('zeromq');
var sock = zmq.socket('sub');
sock.connect("tcp://127.0.0.1:5555");
console.log("Subscriber connected to port 5555");
sock.on('message', function(msg){
console.log('work: %s', msg.toString());
});

知道我做错了什么吗?有没有关于从不同语言互连 ZeroMQ 的教程?我只能找到在通信双方使用相同的技术的示例。

知道我做错了什么吗?

ZeroMQSUB-archetype 什么也没收到,除非它明确订阅了某个"主题"("-是"一切"的合法主题(,或者它在PUB端和SUB端都设置了这种主题过滤配置的镜像逻辑,给定ZMQ_INVERT_MATCHING标志自我解释此类订阅将如何开始工作。

。能够让 nodeJS 服务器 + nodejs 客户端示例工作 ......没有机会...不,没有
kein moeglichkeit - nein nein ...

提示:您的代码不执行任何必备的订阅设置。字面上看,SUB-archetype 默认状态没有订阅任何内容,因此代码无法让(它(工作。


Q但我无法使用C++连接它

好吧,在声称C++/API出现问题之前,最好测试并记录所有这些潜在的错误状态:

MCVE 制定的问题必须可重新测试,否则堆栈溢出中不存在该问题。

ZeroMQ具有精心设计的错误报告工具,因此在每个步骤中,人们都可以读取错误状态并根据收到进入任何类型的定义错误状态的详细原因来报告错误状态:{ EINVAL | ETERM | ENOTSOCK | EINTR | ... }如ZeroMQ源代码中定义的那样(并在ZeroMQ API文档中详细记录,逐个版本(。