Я делаю клиент IRC, использующий LUA. Я пользуюсь библиотеками, которые шли "с Lua для Windows". Таким образом, я использую luasocket для comms и IUP для битов UI.
Проблема, которую я имею, состоит в том, что я застреваю в цикле, когда я считал IO. Я попробовал таймер в IUP, но это, казалось, не работало.
Я, искал способ задержать цикл чтения IO.
Я изложил время в чтения к 0, и это работало.
Вероятно, вы выполняете блокирующее чтение сокета TCP внутри потока графического интерфейса. Это заблокирует все ваше приложение, если вы не получите ожидаемые данные своевременно. Выполните ввод-вывод сокета в отдельном потоке (см. Lua Lanes ) или используйте неблокирующий ввод-вывод (см. settimeout
).
Kepler Project - отличный ресурс для руководства по сетевым приложениям с Lua, но он ориентирован на веб-приложения, а не на IRC-клиент. Например, библиотека Copas использует сопрограммы Lua для обработки нескольких TCP-соединений.
Теперь, если вы действительно хотите узнать, как создать задержку в Lua, тогда статья Sleep Function в вики lua-users должна предоставить всю необходимую информацию.