繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM