С небольшим запозданием, но я таки обновил сервер снова, и исправил все баги.
Итак, теперь сервер постоянно обменивается с клиентами пингами. Это позволяет поддерживать соединение "в тонусе" и не давать ему отвалиться, как на TCP подключениях, так и на веб-клиенте.
Для теста я держал соединение между веб-клиентом и программкой в эмуляторе OC открытым примерно два часа. Ничего не сломалось.
Кроме того я добавил больше контроля над состоянием соединения.
В веб клиенте фон будет загораться красным в случае проблем с соединением, так что это будет легко заметить и обновить страничку.
В библиотеке для OpenOS добавились новые методы:
server:ping(content[, timeout]), boolean - позволяет послать серверу Stem пинг. В качестве контента указываете любой кусок данных. Сервер должен будет его вернуть в точности чтобы подтвердить пинг. Метод блокирующий, ждет ответа от сервера вплоть до таймаута (который по дефолту 5 секунд). Возвращает true или false.
server:isConnected(): boolean, error - проверка того, установлено ли подключение к серверу Stem. Если установлено, вернет true. Если не установлено - вернет nil и сообщение об ошибке.
server:reconnect(): server, error - если что, этой командой можно переподключиться к серверу. Вернет ссылку на самого себя (объект server) в случае успеха. В случае ошибки, как водится, nil и строку с сообщением об ошибке.
Подробный список команд можно полистать тут.
Установить новую версию библиотеки можно по прежнему из Hel:
hpm install stem
Если библиотека уже была устанвлена, можно только обновить:
hpm upgrade stem
Если вы не пользуетесь Hel, то качайте по прямой ссылке:
wget https://gitlab.com/UnicornFreedom/stem/raw/master/stem.lua