Приложение 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());