Приложение Android висит на subscriber.recv()

Я пишу приложение для Android, которое получает непрерывный поток данных. Я установил соединение внутри работающего так:

Runnable runnable = new Runnable()
    {
        public void run()
        {
        ZMQ.Context context = ZMQ.context(1);
        ZMQ.Socket subscriber = context.socket(ZMQ.SUB);
        subscriber.connect("tcp://[IP]:[Port]");
            TextView strDisplay = (TextView) findViewById(R.id.stringDisplay);
            while (!Thread.currentThread ().isInterrupted ())
            {
                // Read message contents
                Log.i("Output", "the while loop ran up to here");
                //*HANGS ON THE LINE BELOW*
                String testcase = subscriber.recvStr(0);
                strDisplay.setText(testcase);
                Log.i("Output", "The while loop completed");
            }

Теперь, после долгих размышлений в паутинах, я пришел к двум выводам:

1) что recvStr() является блокирующим вызовом, который ждет, пока что-то не получит. Так что это означает, что он не подключен должным образом или что-то еще

а также

2) что мне может понадобиться установить какой-то фильтр?

Я не могу понять, что мне делать дальше. Любая помощь от кого-то опытного с доступом к серверу JeroMQ или Android очень ценится

1 ответ

Решение

Возможно, вам нужно подписаться на тему, которую вы хотите получить от издателя, или подписаться на все темы после того, как вы установили соединение.

Например подписка на одну тему:

subscriber.subscribe("topic_to_get".getBytes());

Подписка на каждую тему:

subscriber.subscribe("".getBytes());
Другие вопросы по тегам