Skip to content

Commit 6545cb0

Browse files
author
Lapp
committed
project: added readme file. connection, handler, hub, main: refactored code. hub, main: added comments
1 parent 375888a commit 6545cb0

File tree

5 files changed

+21
-6
lines changed

5 files changed

+21
-6
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Чат на вебсокетах
2+
[![Release](https://img.shields.io/badge/release-v1.0.0-blue)](https://github.com/Lapp-coder/go-pocket-sdk/releases)
3+
4+
### Для запуска сервера используйте следующую команду
5+
```make docker-build && docker run --name=chat -e CHAT_HOST=<host> -e CHAT_PORT=<port> -p <port>>:<port> --rm websocket-chat```
6+
7+
### Для запуска сервера с конфигурацией по умолчанию
8+
```make docker-run```
9+
10+
#### P.S: Клиентом можно воспользоваться перейдя на корневую страницу сайта.

connection.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ func newConnection(ws *websocket.Conn, hub *hub) *connection {
1616
}
1717
}
1818

19-
func (c *connection) read() {
19+
func (c *connection) readMessages() {
2020
for {
2121
_, message, err := c.ws.ReadMessage()
2222
if err != nil {
@@ -28,7 +28,7 @@ func (c *connection) read() {
2828
c.ws.Close()
2929
}
3030

31-
func (c *connection) write() {
31+
func (c *connection) writeMessages() {
3232
for message := range c.send {
3333
if err := c.ws.WriteMessage(websocket.TextMessage, message); err != nil {
3434
break

handler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ func (h *handler) chat(w http.ResponseWriter, r *http.Request) {
4242
conn.hub.unregister <- conn
4343
}()
4444

45-
go conn.write()
46-
conn.read()
45+
go conn.writeMessages()
46+
conn.readMessages()
4747
}

hub.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package main
22

3+
// hub является центральным узлом (чатом), который обрабатывает все соединения
34
type hub struct {
45
connections map[*connection]struct{}
56
broadcast chan []byte
@@ -16,7 +17,8 @@ func newHub() *hub {
1617
}
1718
}
1819

19-
func (h *hub) run() {
20+
// listen прослушивает новые соединения, закрытые соединения и сообщения из канала broadcast
21+
func (h *hub) listen() {
2022
for {
2123
select {
2224
case conn := <-h.register:

main.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@ func main() {
1414
hub := newHub()
1515
handler := newHandler(hub)
1616
handler.initRoutes()
17-
go hub.run()
17+
go hub.listen()
1818

1919
host := os.Getenv("CHAT_HOST")
2020
port := os.Getenv("CHAT_PORT")
2121
if host == "" || port == "" {
2222
logrus.Fatalf("incorrect address to start the server")
2323
}
2424

25+
// Запуск сервера в go-рутине для его плавной остановки
2526
srv := newServer(host + ":" + port)
2627
go func() {
2728
if err := srv.start(); err != nil {
@@ -31,12 +32,14 @@ func main() {
3132

3233
logrus.Info("server started")
3334

35+
// Ожидание на получение одного из системных сигналов (SIGINT, SIGTERM) для продолжение выполнения функции main
3436
shutdown := make(chan os.Signal)
3537
signal.Notify(shutdown, syscall.SIGINT, syscall.SIGTERM)
3638
<-shutdown
3739

3840
logrus.Info("server shutdown")
3941

42+
// Плавная остановка сервера
4043
if err := srv.shutdown(context.Background()); err != nil {
4144
logrus.Errorf("failed to graceful shutdown server: %s", err.Error())
4245
}

0 commit comments

Comments
 (0)