• Как работать с NIO?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Очень обширный вопрос и ответ такого объема врядли найдете.
    Могу только предложить такой вариант. Попробуйте написать свой чат постепенно его усложняя.
    Для примера. Есть некий класс user в котором есть поля ip_addres\username.
    Есть некий абстрактный класс packet в нем есть поля pack_num, byte_data. Так же есть наследник pack_message у которого есть новое поле message. И pack_auth с полем username.
    pack_num = уникальный номер пакета чтобы понимать во что надо сериализовать или десериализовать.
    byte_data = байтовое представление содержимого пакета.
    Дальше пишете(или берете сниппет) сервера\клиента. Сервер ждет данные, клиент присылает пакет pack_auth со своим username, сервер создает поток и экземпляр user в которой вносит полученные данные. Дальше клиент и сервер могут меняться такими своими пакетами pack_message.
    Когда наиграетесь то усложняйте задачу, введите новый тип пакета бродкаст, комнаты, оповещение о доставке сообщения, состояние пользователей и т.д. постоянно усложняя задачу. В конечном счете будете понимать как это все работает а в частности сможете брать новую тему с челенджем для себя и реализовывать ее.
    Я лично только после такого смог более или менее разобраться с nio, а чат просто потому что это не так сложно, интересно и охватывает очень многие темы работы с nio. Еще кстати заодно и заюзал eventbus из либы guava для событийно ориентированного кода а позже написал свою версию библиотеки для событий и наживую вкинул в чат.
    Ответ написан
    1 комментарий