GithubHelp home page GithubHelp logo

chatsim's Introduction

ChatSim

APK в корне.

О программе.

  1. Так как это не полноценный чат-клиент, а всего лишь визуальное представление подобного чата, можно было бы пойти более простым путем и ограничиться логикой добавления спрайтов сообщений в скролл. Но, так как это все же симулятор, я попытался в очень упрощённом виде описать логику работы подобной программы с использованием воображаемых клиентов и иденичного сервера, общение между ними заменить событиями. Все сообщения от каждого клиента приходят на сервер и рассылаются всем клиентам. Наше окно - окно нашего клиента.
  2. Сервер. Принимает подключения, запросы от клиентов на переход в канал и непосредственно сами сообщения, который потом рассылает всем участникам канала.
  3. Клиент. Подключется к серверу, подключается к каналам (их может быть сколько угодно, но логика сильно упрощена до списка с именами каналов), есть активный канал, в котором он находится непосредственно сейчас.
  4. Сообщение. В нем само сообщение, ник пользователя и его роль. Оно, естественно не пакуется в байты для передачи.
  5. Канал. Класс со списком расположившихся в нем пользователей, удалает и добавляет клиентов.
  6. Мир клиентов. Здесь располагается редактируемый список каналов с включенным в каждый из них список клиентов. На старте создаётся сервер, создаются все клиенты и каждый из них подключается к каналам, которые указаны в настраеваемом списке.
  7. UI. Подписан на сообщения от мира клиентов, также отправляет сообщение миру клиентов с запросом отослать сообщение. Здесь также происходит удаление сообщений (список сообщений не ведётся на сервере, ведётся тут, учитывая то, что это все же симулятор).
  8. Информация о клиенте. Представлена скриптуемым объектом, в котором 3 поля: имя, роль, аватар. Соответственно этими объектами мы и формируем участников каналов.

О фишках.

  1. Можно перейти в список всех актуальных каналов и перейти на любой из них.
  2. При подключении к чату, выводится сообщение о подключившемся клиенте.
  3. В правом верхнем углу отображается название канала.
  4. Для того, чтобы все работало, в инспекторе нужно указать себя и свой основной канал. Можно включить эмуляцию активности канала. Все кроме нас, соответственно, заходят и выходят, присылают сообщения со случайным текстом из базы сообщений.
  5. Сообщения в чатах сохраняются на время сессии.

О проблемах. Клавиатура андроид в юнити полностью блокирует нажатие на элементы UI (может есть и какая-то другая причина), поэтому отправить сообщение возможно только после сворачивания клавиатуры. Единственный вариант - написать что-то своё (клавиатуру или InpurField), но это займет время.

О доработках. Естественно, можно добавить пул всех объектов, которые мы добавляем и убавляем, готовым пользоваться не стал. Можно также было бы ограничиться различными префабами для каждого вида баблов сообщений, но я сделал префаб универсальным.

chatsim's People

Contributors

samserious25 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.