簡體   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