订阅者/使用nanomsg从发布者接收数据。

时间:2017-02-17 00:42:10

标签: c# protocol-buffers nanomsg

我正在使用nanomsg的C#数据绑定。我有一个外部程序,它在url ipc:// report_data上发送Google Protocol Buffer消息,我的订阅者连接到同一个确切的URL。所以,我希望我的订阅者能够检索在该URL上发送的任何数据,但事实并非如此。我使用函数Receive(),没有任何东西通过。该URL上只有一种类型的消息,因此我并不关心该主题。有经验的nanomsg是否知道如何阅读传输网址中的任何数据,无论主题如何?

这是我的订阅者和接收消息的代码:

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 个答案:

答案 0 :(得分:0)

想出来 - 为了让订阅者接收我所做的所有消息,订阅者订阅了一个空字符串主题:“”。