Перейти к содержимому
Totoro

Stem - мультиканальный интернет мост

Рекомендуемые сообщения

@Totoro всё работает. Даже не знаю, в чем проблема была. Поставил имя канала "test" - все заработало:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Alex сказал:

@Totoro всё работает. Даже не знаю, в чем проблема была. Поставил имя канала "test" - все заработало:)

Может быть оно некорректно обрабатывает какие-нибудь символы в названии канала. Если что-то такое появится - пиши.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Totoro хм, новая  проблемка. Прошло 4 минуты, майн работал, компы - передатчик и приемник. Сервер отображал 2-е новых сессии и 1 канал активный. По истечении этого времени канал сдох, о чем сообщила мониторилка сервера и известила, что активных каналов 0. Сендилкой отправляю сообщение, на приемнике уже тихо.

 

п.с. Переподключился и там и там - все опять отправляется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Totoro повторно провел опыт, канал отваливается ~5 мин. А текущие сессии уменьшаются на 1. Кто отваливается, слушатель или отправитель, понять сложно, но судя по всему по каким-то причинам отваливается сабскрайбер и канал уничтожается при таймауте в 5 минут.

 

примеч. Тесты проводил на нашем хосте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, Alex сказал:

По истечении этого времени канал сдох, о чем сообщила мониторилка сервера и известила, что активных каналов 0.

По идее, это означает, что сдох коннект от того компа, который был подписан на канал. Приемник-то есть.

Канал считается сдохшим, если на него никто не подписан.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Totoro сказал:

Канал считается сдохшим, если на него никто не подписан.

ага. Но я даже майн не сворачивал. просто наблюдал. Это даже компы не то что из чанков не выгружались, а даже с глаз не пропадали:) А канал почему-то убивается чем-то. И одна сессия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Alex буду смотреть, что там такое. Надо понять кто именно убивает соединение - OC, Stem или ещё кто-то.

Если окажется, что соединение гасится по бездействию Явой или OpenComputers - придется делать какой-то периодический пинг, чтобы поддерживать контакт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Totoro а может это фишечка оски? Не может она по таймауту сама закрывать коннекты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, Alex сказал:

@Totoro а может это фишечка оски? Не может она по таймауту сама закрывать коннекты?

Тоже такая идея в голову пришла.

Но интересно, что закрывается только одна сессия - приемник. А вторая живет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Totoro сказал:

Но интересно, что закрывается только одна сессия - приемник. А вторая живет.

вот вот. Согласен. Тоже странно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Totoro Стоп, а у Рида же не закрывалось ничего вроде на его мосте? Или ты не помнишь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
35 минут назад, Alex сказал:

@Totoro Стоп, а у Рида же не закрывалось ничего вроде на его мосте? Или ты не помнишь?

Не помню. Надо отыскать тех кто им более активно пользовался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Totoro сказал:

Не помню. Надо отыскать тех кто им более активно пользовался.

@Asior ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я то тут причем? Я не разбирал серверную часть на винтики. Я только юзал то что есть и все. У рида вообще нет дисконнекта. Хз как это работает но у меня в программе, которую я недавно писал вообще нет дисконнекта. Программа тупо закрывается и все. Тут надо звать @1Ridav

Кстати да. С подключением какая то проблема. Например мне удалось настроить приемник на оцелоте, и передатчик на эмуляторе (OCEmu) там все нормально работало. А вот обратно отказалось. Но я подозреваю что там из-за эмулятора все это дело. Слишком он уж устарел.

Изменено пользователем Asior

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ВНИМАНИЕ!!! ОБНОВЛЕНИЕ.

 

 

Сервер STEM ночью был обновлен и перезагружен, всё что было к нему подключено - отключилось.

 

Что нового?
Новая веб-страничка. Теперь там появился веб-клиент. Мы можете подключиться к любому каналу и почитать, что там пишут. И даже написать самому.

Конечно свободы там меньше чем если работать через OC напрямую - послать любые данные не получится, только UTF-8 текст. Но зато не надо писать код, а можно просто с сайтика всё отправлять.

Кроме того, я отрефакторил внутреннюю структуру сервера, поменялось довольно много кода.

 

Всё пока еще сырое, активное тестирование и сообщение о багах приветствуется.

В ближайшие несколько дней буду фиксить баги и добавлять остальные обещаные плюшки, типа ping пакета.

 

Скрытый текст

l7IaR5e.png

 

Изменено пользователем Alex
Установка спойлера

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Totoro о, патчик подвезли!)) круто
п.с. каналы пока так сами по себе и отваливаются. И даже если чисто с вебки его криэйтить. Через несколько минут канал на сервере умирает судя по мониторилке каналов и сессий

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, Alex сказал:

п.с. каналы пока так сами по себе и отваливаются. И даже если чисто с вебки его криэйтить. Через несколько минут канал на сервере умирает судя по мониторилке каналов и сессий

Угу, проблема есть.

Но я знаю как это поправить, во всяком случае для веба. Сейчас нафигачу пинг-пакеты и буду их слать каждые N секунд или минут.
Вечером будет фикс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С небольшим запозданием, но я таки обновил сервер снова, и исправил все баги.

 

Итак, теперь сервер постоянно обменивается с клиентами пингами. Это позволяет поддерживать соединение "в тонусе" и не давать ему отвалиться, как на 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так.

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

Я немного покопался в исходном коде, и нашел один занятный баг.

Оказывается, каждый раз, когда кто-то отключался от сервера, со всех каналов, на которые он был подписан, дропались все подписчики.

 

Я этот баг исправил, и накатил новую версию (0.2.1) на сервер.

Кроме того коммиты с фиксами доступны в репозитории, если кто-то держит локальную копию stem'а.

 

Приглашаю всех, у кого наблюдались косяки со связью, повторно протестировать и отписаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Немного пошаманив сделал stand-alone версию. 

https://raw.githubusercontent.com/BrightYC/Other/master/stem-standalone.lua

 

Можно встроить в голый биос, или голый ЖД. Единственное - немного упала простота использования. Порт можно сменить лишь изменив код(Рядом с портом есть комментарий --port) и адрес сервера так же меняется в начале программы. 

 

В остальном - почти тот же стем, за исключением того, что функции вызываются без stem.connect(), а напрямую - например connect(), subscribe, unSubscribe(), disconnect() и т.д.
(Учтите, что писать connect надо лишь один раз, так как connect подменяет pullSignal, для подключения в дальнейшем нужно использовать reconnect)

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...