> 백엔드 개발 > Golang > Go와 함께 WebSocket 서버 생성

Go와 함께 WebSocket 서버 생성

Mary-Kate Olsen
풀어 주다: 2025-01-27 04:02:08
원래의
403명이 탐색했습니다.

Creating a WebSocket Server in Go with Gorilla

Gorilla로 실시간 Go WebSocket 서버 구축

WebSocket은 클라이언트와 서버 간의 실시간 양방향 통신을 위한 강력한 솔루션을 제공합니다. 이 튜토리얼에서는 인기 있는 Gorilla WebSocket 라이브러리를 활용하여 Go에서 WebSocket 서버를 생성하는 과정을 안내합니다.


목차

  1. WebSocket과 Gorilla의 이해
  2. 프로젝트 설정
  3. 디렉토리 구조
  4. 고릴라 웹소켓 설치
  5. WebSocket 서버 구축
  6. 메시지 처리
  7. 애플리케이션 실행
  8. 결론
  9. GitHub 저장소(링크 자리표시자)

WebSocket과 Gorilla의 이해

WebSocket은 HTTP의 요청-응답 모델과 달리 지속적인 전이중 통신 채널을 제공합니다. 이러한 지속적인 연결을 통해 효율적이고 지속적인 데이터 교환이 가능합니다.

Gorilla WebSocket 라이브러리는 Go에서 WebSocket 구현을 단순화하여 핸드셰이크, 메시지 I/O 및 연결 수명 주기를 관리합니다.


프로젝트 설정

이 튜토리얼에서는 기본 WebSocket 서버와 클라이언트를 구축합니다.

  1. 연결을 허용하는 WebSocket 서버.
  2. 서버와 상호작용하는 클라이언트.

디렉토리 구조

다음과 같이 프로젝트를 구성하세요.

<code>websocket-server/
├── main.go           # Application entry point
├── handlers/         # WebSocket handler functions
│   └── websocket.go  # Handles WebSocket connections and messages
├── static/           # Client-side HTML/JS files
│   └── index.html    # Simple client interface
└── go.mod            # Go module file</code>
로그인 후 복사

고릴라 웹소켓 설치

Gorilla WebSocket 패키지 설치:

<code class="language-bash">go get -u github.com/gorilla/websocket</code>
로그인 후 복사

WebSocket 서버 구축

1단계: main.go

만들기 main.go:

<code class="language-go">package main

import (
    "fmt"
    "log"
    "net/http"
    "websocket-server/handlers"
)

func main() {
    http.HandleFunc("/ws", handlers.HandleWebSocket)
    http.Handle("/", http.FileServer(http.Dir("./static")))
    port := ":8080"
    fmt.Printf("Server running on http://localhost%s\n", port)
    log.Fatal(http.ListenAndServe(port, nil))
}</code>
로그인 후 복사

/ws에서 HTTP 서버를 설정하고 정적 파일을 제공하며 WebSocket 연결을 처리합니다.

2단계: WebSocket 핸들러(websocket.go)

handlers 디렉토리에서 websocket.go:

를 생성합니다.
<code class="language-go">package handlers

import (
    "fmt"
    "net/http"

    "github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{
    CheckOrigin: func(r *http.Request) bool { return true },
}

func HandleWebSocket(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        fmt.Println("Upgrade failed:", err)
        return
    }
    defer conn.Close()
    fmt.Println("Client connected")
    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            fmt.Println("Read failed:", err)
            break
        }
        fmt.Printf("Received: %s\n", msg)
        if err := conn.WriteMessage(websocket.TextMessage, msg); err != nil {
            fmt.Println("Write failed:", err)
            break
        }
    }
}</code>
로그인 후 복사

이 핸들러는 HTTP 연결을 업그레이드하고 메시지를 읽고 다시 에코합니다.


메시지 처리

HandleWebSocket은(는) 수신 메시지를 처리합니다. 이를 확장하여 브로드캐스팅이나 메시지 지속성과 같은 기능을 구현할 수 있습니다.


애플리케이션 실행

1단계: 단순 클라이언트(index.html)

index.html 디렉토리에 static 생성: (이 섹션에서는 웹소켓에 연결하려면 클라이언트 측 JavaScript 구현이 필요합니다. 간결성을 위해 기본 예는 생략되었지만 많은 예는 온라인에서 쉽게 사용할 수 있습니다.)

2단계: 서버 실행

달려 go run main.go. 그런 다음 브라우저에서 http://localhost:8080을 엽니다(적절한 클라이언트 측 JavaScript가 포함되어 있음).


결론

이 튜토리얼에서는 Gorilla를 사용하는 기본 Go WebSocket 서버를 보여줍니다. WebSocket은 실시간 애플리케이션에 이상적입니다. 필요에 따라 인증, 브로드캐스팅, 데이터 저장을 통해 이 기반을 확장하세요.


GitHub 저장소

[여기에 GitHub 저장소 링크 삽입]

위 내용은 Go와 함께 WebSocket 서버 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿