websocketchat

0

Описание

Чат на вебсокетах

Языки

  • Go34,7%
  • CSS28,1%
  • JavaScript25,6%
  • HTML10,3%
  • Shell1,3%
2 года назад
2 года назад
2 года назад
README.md

Чат на вебсокетах с фронтендом

Состав проекта


backend

Здесь хранится серверная часть проекта, то есть сами функции с вебсокетами, загрузка данных, запись данных..


backend/server

  • file_operations.go

В этом файле проходят такие операции как сохранить сообщение (в JSON), загружать сообщения оттуда, сохранять и загружать юзеров.... Функции: - SaveMessage(message Message) error - LoadMessages() (MessageHistory, error) - SaveUsers(users UserList) error - LoadUsers() (UserList, error)

  • models.go

В этом файле хранятся всякие структуры или значения переменных для будущего использования в др.файлах - Структуры: - Client - User - UserList - Message - MessageHistory

  • server.go

В этом файле основное - вебсокеты. Здесь логика соединения между клиентами Функции: - HandleConnection(w http.ResponseWriter, r *http.Request) - Обрабатывает подключение клиента, отправляет сообщения и управляет состоянием клиента.

  • server.old

Этот файл нам не пригодится. Это старая версия server.go, я ее сохранил на всякий

backend/main.go

Здесь логика запуска сервера ws.

frontend


frontend/public

В public есть такие директории как

css
,
html
,
js
. В них по 2 файла для работы с двумя страницами - index.html и chat.html

Почему разные html страницы?

Предназначение разное. Index.html я использую для присвоения никнейма клиенту, а chat.html соответсвенно для чата.

frontend/package(-lock).json

Это конфигурационные файлы для запуска фронтенда.

frontend/server.js

Соответсвенно доп конфиг для запуска фронтенда, сборки и тд


Методы запуска

go run main.go и npm start(не очень удобно)

Довольно интересный способ, но новичкам не очень подходит. Посмотрим на start.sh:

Запуск через
start.sh
(очень удобно)

Скрипт

start.sh
предназначен для одновременного запуска сервера и фронтенда. Удобство в том, что скрипт запускает одновременно две команды, что облегчает задачу. Убедитесь, что скрипт имеет права на выполнение:

Прим вам могут показаться эти способы похожими, и вы будете правы, но только start.sh выполняет сразу 2 команды без ожидания пока не прервется одна из команд. На первое время способ с

start.sh
очень хорош.