>  기사  >  백엔드 개발  >  golang WebSocket 예: 간단한 채팅 애플리케이션 구축

golang WebSocket 예: 간단한 채팅 애플리케이션 구축

WBOY
WBOY원래의
2023-12-18 08:13:311173검색

golang WebSocket示例:构建一个简单的聊天应用

Golang WebSocket 예제: 간단한 채팅 애플리케이션 구축

인터넷이 발달하면서 실시간 커뮤니케이션이 점점 더 주목을 받고 있습니다. 실시간 통신 프로토콜인 WebSocket은 클라이언트와 서버 간에 지속적인 연결을 설정하여 양방향 실시간 데이터 전송을 가능하게 합니다. 이 기사에서는 Golang을 사용하여 WebSocket을 통해 실시간 메시지를 보내고 받는 간단한 채팅 애플리케이션을 구축하는 방법을 소개합니다.

시작하기 전에 컴퓨터에 Golang 개발 환경이 올바르게 설치되었는지 확인하세요.

먼저 Golang에서 일반적으로 사용되는 WebSocket 라이브러리인 "Gorilla Websocket" 패키지를 가져와야 합니다. 터미널에서 다음 명령을 사용하여 설치합니다.

go get github.com/gorilla/websocket

다음으로 main.go 파일을 만들고 필요한 패키지를 가져옵니다.

package main

import (
    "log"
    "net/http"

    "github.com/gorilla/websocket"
)

메인 함수에서 WebSocket 연결 요청을 처리하기 위한 WebSocket 핸들러 함수를 정의합니다.

func wsHandler(w http.ResponseWriter, r *http.Request) {
    // 升级HTTP连接为WebSocket连接
    conn, err := websocket.Upgrade(w, r, nil, 1024, 1024)
    if err != nil {
        log.Println(err)
        return
    }

    // 处理WebSocket连接
    for {
        // 读取客户端发送的消息
        _, msg, err := conn.ReadMessage()
        if err != nil {
            log.Println(err)
            break
        }

        // 将消息发送给所有连接的客户端
        for client := range clients {
            err := client.WriteMessage(websocket.TextMessage, msg)
            if err != nil {
                log.Println(err)
                client.Close()
                delete(clients, client)
            }
        }
    }

    // 关闭WebSocket连接
    conn.Close()
}

위 코드에서는 먼저 HTTP 연결을 WebSocket 연결로 업그레이드한 다음 for 루프를 사용하여 클라이언트가 보낸 메시지를 지속적으로 수신하고 이 메시지를 연결된 모든 클라이언트에 보냅니다. 오류가 발생하거나 클라이언트 연결이 끊어지면 해당 연결을 닫습니다.

다음으로 연결된 모든 클라이언트를 저장하기 위해 전역 변수 클라이언트를 정의해야 합니다.

var clients = make(map[*websocket.Conn]bool)

그런 다음 기본 함수의 코드를 수정하고 WebSocket 프로세서 함수를 "/ws" 경로와 연결한 다음 HTTP 서버를 시작합니다. :

func main() {
    http.HandleFunc("/ws", wsHandler)

    err := http.ListenAndServe(":8000", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

마지막으로 브라우저나 WebSocket 클라이언트 도구를 사용하여 채팅 애플리케이션을 테스트할 수 있습니다. 브라우저에 "http://localhost:8000"을 입력하고 콘솔을 열고 다음 JavaScript 코드를 실행합니다.

var ws = new WebSocket("ws://localhost:8000/ws");

// 连接建立时触发的事件
ws.onopen = function() {
    console.log("连接成功");
};

// 收到消息时触发的事件
ws.onmessage = function(evt) {
    console.log("收到消息:" + evt.data);
};

// 发送消息
ws.send("Hello, World!");

위 코드를 통해 서버로부터 "Hello, World!" 메시지를 수신하고 출력합니다. 콘솔에서.

이 시점에서 우리는 Golang과 WebSocket을 사용하여 실시간 메시지를 보내고 받는 간단한 채팅 애플리케이션을 성공적으로 구축했습니다. 물론 이는 기본적인 예시일 뿐이며 필요에 따라 확장하고 최적화할 수 있습니다. 이 글이 여러분에게 도움이 되기를 바라며, Golang과 WebSocket을 사용하여 실시간 통신 애플리케이션을 개발할 때 더 많은 성공을 거두시기를 바랍니다!

위 내용은 golang WebSocket 예: 간단한 채팅 애플리케이션 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.