[英]zeromq (zmq) missing messages with c++ publisher and python subscriber
[英]ZMQ publisher server with NodeJS subscriber
我想做的是拥有一个具有发布者角色的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的教程? 我只能在通讯的两端找到使用相同技术的示例。
问 :有什么想法我做错了吗?
ZeroMQ SUB
-archetype不会接收任何内容,除非它明确地订阅了一些“ Topic ”(“-”代表“ everything”是合法的),或者它在PUB
端和SUB
端,给定一个ZMQ_INVERT_MATCHING
标志,可以自我解释这种订阅将如何开始工作。
...能够使nodeJS服务器+ nodejs客户端示例正常工作 ...没有机会...没有
kein moeglichkeit-nein nein ...
提示:您的代码没有执行任何一项必需的订阅设置。 SUB
-archetype默认状态从字面上看是什么都没有订阅,因此代码无法使它正常工作。
问 : 但是我无法使用C ++进行连接
好吧,在声称C ++ / API有问题之前,最好先测试并记录所有这些潜在的错误状态:
MCVE提出的问题必须是可重新测试的,否则该问题在StackOverflow中不存在。
ZeroMQ具有良好的精雕细琢错误报告工具,所以在每一个步骤,可以读取错误状态,并报告按照接收的详细原因抵达到任何种类的定义错误状态: { EINVAL | ETERM | ENOTSOCK | EINTR | ... }
{ EINVAL | ETERM | ENOTSOCK | EINTR | ... }
{ EINVAL | ETERM | ENOTSOCK | EINTR | ... }
在ZeroMQ来源中定义(并在ZeroMQ API文档中有详细说明,逐个版本)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.