ホームページ  >  記事  >  バックエンド開発  >  golang WebSocket の例: 単純なチャット アプリケーションの構築

golang WebSocket の例: 単純なチャット アプリケーションの構築

WBOY
WBOYオリジナル
2023-12-18 08:13:311125ブラウズ

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"
)

main 関数で、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 ループを使用してクライアントから送信されたメッセージを継続的に受信します。メッセージは接続されているすべてのクライアントに送信されます。エラーが発生したり、クライアントが切断されたりすると、対応する接続​​が閉じられます。

次に、接続されているすべてのクライアントを保存するためにグローバル変数 client を定義する必要があります:

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

次に、main 関数のコードを変更し、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。