Skip to content

Простой чат-сервис на вебсокетах с без использования сторонних библиотек. Тестовое задание

Notifications You must be signed in to change notification settings

bonavi/websocket-chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Необходимо реализовать сервер в виде консольного приложения, который регистрирует подключения клиентских приложений (каждому клиенту при подключении присваивается уникальный идентификатор) по веб-сокетам в группах (hub) не более n - клиентов

При достижении лимита (n) подключений создается новый hub

При выполнении в консоли сервера команды “send --hub” (где параметр --hub - номер hub) осуществляется broadcast рассылка произвольного сообщения все клиентам указанного hub

При выполнении в консоли сервера команды “sendс --id” (где параметр --id - идентификатор клиента) осуществляется отправка сообщения сообщения конкретному клиенту

Тестовое задание можно было бы легко сделать с использованием библиотеки gorilla/websocket, но я решил пойти более интересным путем и сделать задание используя только встроенные библиотеки

На решение этого тестового задания потребовалось потратить 8 часов:

  • Изучение формирования соединения между клиентом и сервером. Написал функцию (используя статьи) для апгрейда соединения до ws - 1 час
  • Изучение принципов общения, правил построения фреймов. Написал функции для чтения и написания сообщений - 3 часа
  • Изучение паттернов построения серверов для чатов и написание кастомного сервера, для обработки подключений и рассылки сообщений - 3 часа
  • Приведение все в нормальный вид, расставление комментариев и тестирование - 1 час

Правила использования сервера

  1. Запускаете сервер из терминала строкой "go run main.go"
  2. Запускаете postman, задаете клиента для общения по вебсокету и вписываете адрес: "ws://localhost:8000/ws" и подключаетесь к серверу
  • Если хотите отправить сообщение конкретному клиенту, необходимо написать "sendc --id /clientID/ /msg/"
  • Если хотите отправить сообщение клиентам какого-то хаба, необходимо написать "send --hub /hubID/ /msg/"

Примечания:

  • При подключении клиента к серверу, клиенту сразу же поступает сообщение с его идентификатором и идентификатором его хаба

About

Простой чат-сервис на вебсокетах с без использования сторонних библиотек. Тестовое задание

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages