Junior — Middle
HTTP сокет протоколу жана анын ишке ашырылыштары менен иш тажрыйбасыңыз барбы?
sobes.tech AI
AIден жооп
Һә, HTTP сокеттери жана алардын Goда ишке ашырылышы боюнча тажрыйба адатта WebSocket колдонуу менен байланыштуу — бул протокол, ал HTTP үстүндө эки тараптуу байланыш камсыз кылат.
Goда WebSocket менен иштөө үчүн көбүнчө gorilla/websocket китепканасы колдонулат. Ал реалдуу убакытта билдирүүлөрдү алмашууга мүмкүндүк берет.
Жөнөкөй WebSocket серверинин мисалы Goда:
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("Жаңыртуу катасы:", err)
return
}
defer conn.Close()
for {
messageType, message, err := conn.ReadMessage()
if err != nil {
log.Println("Окуу катасы:", err)
break
}
log.Printf("Алынады: %s", message)
err = conn.WriteMessage(messageType, message)
if err != nil {
log.Println("Жазуу катасы:", err)
break
}
}
}
func main() {
http.HandleFunc("/ws", wsHandler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Бул сервер WebSocket байланышын кабыл алат, билдирүүлөрдү окуйт жана кайра жиберет (эхо). Бул негизги мисал, ал WebSocket үстүндө ар кандай протоколдорду ишке ашыруу үчүн кеңейтилип жатат.