Курс — «Программирование на Go для начинающих» — #18 Работа с сетью. Работа с WebSockets.
Здравствуйте, дорогие друзья.
WebSockets предоставляют полнодуплексный канал связи между клиентом и сервером, что позволяет обмениваться сообщениями в реальном времени после установления соединения. В Go для работы с WebSockets часто используется сторонняя библиотека gorilla/websocket.
Установка библиотеки
Для начала установите библиотеку gorilla/websocket, выполнив следующую команду:
go get -u github.com/gorilla/websocket
Создание WebSocket-сервера
Давайте рассмотрим, как можно создать простой WebSocket-сервер, который принимает соединения и эхо-отправляет полученные сообщения обратно клиенту.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36  | 
						package main import (     "fmt"     "net/http"     "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{     CheckOrigin: func(r *http.Request) bool {         return true // Разрешить соединения от любого источника     }, } func echoHandler(w http.ResponseWriter, r *http.Request) {     conn, err := upgrader.Upgrade(w, r, nil) // Обновляем HTTP-соединение до WebSocket-соединения     if err != nil {         fmt.Println("Ошибка при установлении WebSocket-соединения:", err)         return     }     defer conn.Close()     for {         messageType, message, err := conn.ReadMessage()         if err != nil {             fmt.Println("Ошибка при чтении сообщения:", err)             break         }         fmt.Printf("Получено сообщение: %s\n", message)         if err := conn.WriteMessage(messageType, message); err != nil {             fmt.Println("Ошибка при отправке сообщения:", err)             break         }     } } func main() {     http.HandleFunc("/echo", echoHandler)     fmt.Println("WebSocket-сервер запущен на http://localhost:8080/echo")     http.ListenAndServe(":8080", nil) }  | 
					
Создание WebSocket-клиента
WebSocket-клиент может быть реализован на разных языках и платформах. В качестве примера рассмотрим, как отправить сообщение на WebSocket-сервер с использованием JavaScript:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29  | 
						<!DOCTYPE html> <html> <head>     <title>WebSocket Клиент</title> </head> <body>     <script type="text/javascript">         var ws = new WebSocket("ws://localhost:8080/echo");         ws.onopen = function() {             console.log("Соединение установлено.");             ws.send("Привет, сервер!");         };         ws.onmessage = function(event) {             console.log("Получено сообщение: " + event.data);         };         ws.onclose = function(event) {             if (event.wasClean) {                 console.log("Соединение закрыто чисто");             } else {                 console.log("Обрыв соединения");             }             console.log('Код: ' + event.code + ' причина: ' + event.reason);         };         ws.onerror = function(error) {             console.log("Ошибка " + error.message);         };     </script> </body> </html>  | 
					
Этот базовый пример демонстрирует, как установить соединение с WebSocket-сервером, отправить сообщение и обработать входящие сообщения или ошибки.
Использование WebSockets позволяет создавать интерактивные веб-приложения и сервисы с высокой скоростью обмена данными между клиентом и сервером.

На этом все. Всем хорошего дня!
Цикл статей по курсу: «Язык программирования Go для начинающих».
