Skip to content

mishkaleks/easy-chat-frontend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Easy Chat Frontend

Frontend работает с серверной частью.

Основные этапы создания внешнего интерфейса

  • Инициализировать React приложение.

$ npx create-react-app easy-chat-frontend

  • Подключить конфигурацию eslint-config-airbnb.

$ npm i eslint-config-airbnb

Конфигурация содержит дополнительные правила для валидации кода.

  • Установить дополнительные зависимости.

$ npm i react-router socket.io-client query-string react-router-dom

Socket.io-client — это зависимость, созданная socket.io, чтобы помочь подключиться к socket.io на сервере.

Query-string помогает получить параметр в нашем URL-адресе из адресной строки.

  • Настроить роутинг.

Компоннет Home используется при доступе к домашней странице и Chat при доступе к странице чата. На Home странице Link с react-router-dom будет перенаправлять нас на Chat компонент указанной "комнаты" (передвая обязательные поля формы — name и room, в качестве параметров).

Установить необходимые зависимости:

$ npm i prop-types classnames react-helmet use-debounce

и зависимости для работы material-ui:

$ npm i @mui/material @mui/styles @emotion/react @emotion/styled

  • Подключить внешний интерфейс к серверной части.

Компонент Chat используется для подключения к серверу. useLocation c react-router-dom хранит информацию о url-адресе, который передаем с комплнента App в Chat используя роутинг.

{
  hash: ""
  key: "kbwatlxp"
  pathname: "/chat"
  search: "?name=Tom&room=DevCamp"
  state: null
}

С помощью queryString мы получаем параметры name и room.

Создать экземпляр socket и передать конечную точку сервера.

socket = io(ENDPOINT)
  • Подключить пользователя к "комнате" и отправить приветственное сообщение.

Для подключение пользователя к комнате, необходимо отправить данные на сервер используя метод emit(). В качестве первого параметра используется имя события. Чтобы отнести сокет к определенной "комнате" используется событие join и одноименный метод join() на серверной стороне, непосредственно для подключения к "комнате".

socket.emit('join', { name, room }, (error) => {
  if (error) alert(error)
})

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

Создать соединение с сервером для получения сообщений

useEffect(() => {
  socket.on('message', (message) => {
    const updateMessages = [...messages, message]
    setState({ ...state, messages: updateMessages })
  })
}, [])
  • Отправка сообщений.

Сообщения отправляются от пользователя на сервер. Для отправки данных на сервер используем метод emit() и генерируем событие sendMessage.

*Остальные этапы создания внешнего интерфейса будут добавляться по мере развития проекта.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages