Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сервер по обмену мгновенными сообщениями с историей и регистрацией

Запуск сервера

node app.js

После чего сервер запустится на порте, указанном в .env файле (по умолчанию порт 5000).

База данных

В качестве базы данных используется PostgreSQL, параметры для подключения к которой в .env файле.

Запуск клиента

Доступ к клиентской части осуществляется с порта 5000, при соединении клиент-сервер на сервере выводится информационное сообщение.

Регистрация/авторизация

Для регистрации юзер отправляет POST запрос (я использовал postman для этих всех манипуляций) на localhost:port/api/reg с JSON следующего вида:

{"username": "hello", "password": "world"}

в ответ сервер посылает токен.

Для логина юзер отправляет POST запрос на localhost:port/api/login с JSON следующего вида:

{"username": "hello", "password": "world"}

в ответ сервер посылает токен.

Функционал

Клиенты через сервер обмениваются сообщениями, используя web-socket протокол.

Сообщение пользователя видно остальным пользователям и сохраняется в БД при соблюдении следующих условий:

  • сообщение не является служебным (см.ниже)
  • пользователь авторизован(см.ниже)
  • сервер получает (в данном случае, чтобы не писать фронт - условимся, что клиент отправляет) сообщение вида {"username": "hello", "message": "world"}

В случае не соблюдения условий, сообщение не будет доставлено остальным пользователям/сохранено, а пользователю прийдет в чате информационное сообщение с указанием ошибки.

Служебные сообщения

Авторизация

Юзер посылает сообщение вида:

{"username": "hello", "message": "auth token"}

where 'token' is token from api/reg or api/login

После чего его сообщения (за исключением служебных сообщений) становятся видны остальным подключенным клиентам (даже не авторизованным) и записываются в базу данных.

История сообщений

Юзер посылает сообщение вида

{"username": "hello", "message": "history NUM"} or {"username": "hello", "message": "simple NUM"}

where 'NUM' is number of messages to be recalled from history

После чего ему в чате приходит NUM последних сообщений из базы данных. Сообщения начинающиеся с "auth" и "history" не видны остальным участникам чата и не сохраняются.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages