Junior — Middle
HTTP soket protokoli va uning amalga oshirilishlari bilan ishlash tajribangiz bormi?
sobes.tech AI
AIdan javob
Ha, HTTP soketlari va ularning Go'da amalga oshirilishi bilan ishlash tajribasi odatda WebSocketdan foydalanish bilan bog'liq — bu HTTP ustida ikki tomonlama aloqa ta'minlaydigan protokol.
Go'da WebSocket bilan ishlash uchun ko'pincha gorilla/websocket kutubxonasi ishlatiladi. Bu real vaqtda xabarlar almashinuvi uchun serverlar va mijozlar yaratishga imkon beradi.
Go'da oddiy WebSocket serverining misoli:
package main
import (
"net/http"
"github.com/gorilla/websocket"
"log"
)
var upgrader = websocket.Upgrader{}
func wsHandler(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Print("Yangilash xatosi:", err)
return
}
defer conn.Close()
for {
messageType, message, err := conn.ReadMessage()
if err != nil {
log.Println("O'qish xatosi:", err)
break
}
log.Printf("Qabul qilindi: %s", message)
err = conn.WriteMessage(messageType, message)
if err != nil {
log.Println("Yozish xatosi:", err)
break
}
}
}
func main() {
http.HandleFunc("/ws", wsHandler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Ushbu server WebSocket ulanishlarini qabul qiladi, xabarlarni o'qiydi va ularga javob yuboradi (ekso). Bu asosiy misol bo'lib, WebSocket ustida turli protokollarni amalga oshirish uchun kengaytirilishi mumkin.