ホームページ > バックエンド開発 > Golang > golang Websocket 開発ガイド: 複数人オンラインスケジュール管理機能の実装

golang Websocket 開発ガイド: 複数人オンラインスケジュール管理機能の実装

WBOY
リリース: 2023-12-02 09:09:26
オリジナル
676 人が閲覧しました

golang Websocket开发指南:实现多人在线日程管理功能

Golang Websocket 開発ガイド: 複数人によるオンライン スケジュール管理機能の実装

はじめに:
現代生活の速いペースとマルチタスクの要件に対応して、スケジュールの調整や調整が必要になることがよくあります。多人数オンラインスケジュール管理機能により、複数人での共同作業やリアルタイムでのスケジュール共有が可能となり、業務効率が向上します。この記事では、GolangとWebsocketの技術を使って複数人でのオンラインスケジュール管理機能を実現する方法と具体的なコード例を紹介します。

  1. 環境と依存関係:
  2. Golang 1.13 以降
  3. Gin Web Framework
  4. Gorilla Websocket ライブラリ
  5. プロジェクトを作成して初期化します:

    まず、空の Golang プロジェクトを作成し、プロジェクトのルート ディレクトリで次のコマンドを使用して新しい Go モジュールを初期化する必要があります:

    go mod init schedule
    ログイン後にコピー

次に、必要な依存関係をプロジェクトに導入する必要があります:

go get -u github.com/gin-gonic/gin
go get -u github.com/gorilla/websocket
ログイン後にコピー

    Websocket サーバーの作成:
  1. 次に、複数人によるオンライン スケジュール管理機能を実装するための Websocket サーバーを作成します。プロジェクトのルート ディレクトリに、
    main.go という名前のファイルを作成し、そのファイルに次のコードを追加します。
  2. package main
    
    import (
        "log"
        "net/http"
    
        "github.com/gin-gonic/gin"
        "github.com/gorilla/websocket"
    )
    
    func main() {
        router := gin.Default()
    
        upgrader := websocket.Upgrader{
            CheckOrigin: func(r *http.Request) bool {
                return true
            },
        }
    
        router.GET("/ws", func(c *gin.Context) {
            conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
            if err != nil {
                log.Println("Failed to upgrade connection:", err)
                return
            }
    
            // TODO: 处理连接和消息
        })
    
        router.Run(":8000")
    }
    ログイン後にコピー
上記のコードでは、Gin フレームワークを使用します。単純な HTTP サーバーを作成し、

/ws パスに Websocket ルートを登録しました。ルーティング処理機能では、アップグレードHTTP接続をWebsocket接続にアップグレードし、クライアントと確立された接続を取得します。

    接続とメッセージの処理:
  1. Websocket サーバーでは、接続処理とメッセージ ブロードキャスト機能を実装する必要があります。ルーティング処理関数に次のコードを追加します。
  2. connections := make(map[*websocket.Conn]bool) // 存储所有连接的映射表
    
    router.GET("/ws", func(c *gin.Context) {
        conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
        if err != nil {
            log.Println("Failed to upgrade connection:", err)
            return
        }
    
        connections[conn] = true
    
        for {
            _, msg, err := conn.ReadMessage()
            if err != nil {
                log.Println("Error reading message:", err)
                delete(connections, conn)
                conn.Close()
                break
            }
    
            // 广播消息给所有连接
            for conn := range connections {
                err := conn.WriteMessage(websocket.TextMessage, msg)
                if err != nil {
                    log.Println("Error broadcasting message:", err)
                    delete(connections, conn)
                    conn.Close()
                }
            }
        }
    })
    ログイン後にコピー
上記のコードでは、マッピング テーブル

connections を使用してすべての接続を保存します。新しい接続が確立されると、その接続がマッピング テーブルに追加されます。同時に、無限ループを通じてクライアントからのメッセージを読み取り、そのメッセージをすべての接続にブロードキャストします。

    フロントエンドの実装:
  1. 最後に、複数人によるオンライン スケジュール管理機能をテストするために、フロントエンドにシンプルなインターフェイスを実装する必要があります。プロジェクトのルート ディレクトリに、
    index.html という名前のファイルを作成し、そのファイルに次のコードを追加します。
  2. <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Schedule</title>
    </head>
    
    <body>
        <h1>Schedule</h1>
    
        <input type="text" id="message" placeholder="Enter your message">
        <button id="send">Send</button>
    
        <ul id="messages"></ul>
    
        <script>
            const socket = new WebSocket("ws://localhost:8000/ws");
    
            const messageInput = document.getElementById("message");
            const sendButton = document.getElementById("send");
            const messagesList = document.getElementById("messages");
    
            sendButton.addEventListener("click", () => {
                const message = messageInput.value;
                socket.send(message);
                messageInput.value = "";
            });
    
            socket.addEventListener("message", (event) => {
                const message = document.createElement("li");
                message.innerHTML = event.data;
                messagesList.appendChild(message);
            });
        </script>
    </body>
    
    </html>
    ログイン後にコピー

上記のコードでは、JavaScript WebSocket オブジェクトを使用しました。サーバーとの接続を確立し、ユーザー入力とサーバー メッセージをリッスンします。ユーザーが「送信」ボタンをクリックすると、入力されたメッセージがサーバーに送信されます。同時に、サーバーからメッセージを受信すると、そのメッセージをインターフェイス上のメッセージ リストに追加します。

概要:

この記事では、Golang と Websocket テクノロジーを使用して、複数人によるオンライン スケジュール管理機能を実装する方法を紹介します。まずWebsocketサーバーを作成し、接続処理とメッセージブロードキャスト機能を実装しました。次に、フロントエンドにシンプルなインターフェイスを実装して、機能をテストしました。この記事を通じて、読者が Golang と Websocket を使用して同様の機能を実現する方法とテクニックを理解し、習得できることを願っています。

参考リンク:

    Gin フレームワーク: https://github.com/gin-gonic/gin
  • Gorilla Websocket ライブラリ: https://github. com/gorilla/websocket

以上がgolang Websocket 開発ガイド: 複数人オンラインスケジュール管理機能の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート