Corona SDK и анимация блоков сокетов Lua

#lua #coronasdk #luasocket

#lua #coronasdk #luasocket

Вопрос:

Вот мой сетевой обработчик: https://gist.github.com/anonymous/22fc110ad126ef3a2c5f

Проблема в том, что при получении данных блокируется моя анимация (у меня вращается колесо, когда запрашиваются данные), поэтому похоже, что приложение разбилось, а затем через 1 секунду или 2, когда данные получены, это работает как шарм.

Эта строка, похоже, гарантирует, что при ожидании ответа приложение не зависает:

 local input,output = socket.select( { self.sock }, nil, 0 ) -- this is a way not to block runtime while reading socket. zero timeout does the trick
 

Вот еще одна настройка тайм-аута:

  self.sock:settimeout(0)
 

Я пытался изменить их на 0.01 и 0.001, но безуспешно. Я не совсем уверен, как сделать так, чтобы анимация не зависала.

Может быть, мне следует перейти на один из встроенных в асинхронный сетевой обработчик Coronas (с функциями обратного вызова) или можно изменить этот сетевой обработчик, чтобы анимация не зависала?

Ответ №1:

Если вы можете использовать network. * api Corona, он асинхронный, поэтому у вас не будет никаких блокирующих вызовов.

Ссылка на документацию: http://docs.coronalabs.com/daily/api/library/network/index.html