Подписчик / получает данные от издателя, используя nanomsg.

Я использую привязку данных C# для nanomsg. У меня есть внешняя программа, которая отправляет сообщения буфера протокола Google по URL-адресу ipc: // report_data, и мой подписчик подключается к этому же точному URL-адресу. Таким образом, я ожидаю, что мой подписчик сможет получать любые данные, отправляемые по этому URL, однако это не так. Я использую функцию Receive () и ничего не происходит. По этому URL поступает только один тип сообщений, поэтому меня не волнует тема. Кто-нибудь с опытом работы с nanomsg знает, как читать ЛЮБЫЕ данные, которые поступают по транспортному URL, независимо от темы?

Это код для моего подписчика и получения сообщений:

public static void CreateSubscriber(string url, string topic)
{
    Console.WriteLine("\nCreating new subscriber with topic {0} and url {1}.", topic, url);

    var subscriber = new SubscribeSocket();

    subscriber.Connect(url);
    var sw = Stopwatch.StartNew();

    while (sw.Elapsed.TotalSeconds < 5000)
    {
        if (sw.Elapsed.TotalSeconds % 3 == 0)
        {
            Console.WriteLine("Checking for new data.");
            var streamOutput = ReceiveProtoBufferMessage(subscriber, topic);
        }
    }
    sw.Stop();
    Thread.Sleep(1);
    Console.WriteLine("Disposing subscriber.");
    subscriber.Dispose();
}

static byte[] ReceiveProtoBufferMessage(SubscribeSocket s, string topic)
{
    byte[] data = null;

    try
    {
        data = s.Receive();
        Console.WriteLine("Received data.");
    }
    catch
    {
        Console.WriteLine("Couldn't receive data.");
    }

    if (data != null)
    {
        Console.WriteLine("Data is not null.");
    }
    else
    {
        Console.WriteLine("Null data");
    }

    return data;
}

1 ответ

Разобрался - чтобы подписчик забрал все сообщения, я заставил подписчика подписаться на пустую строковую тему: "".

Другие вопросы по тегам