Golang Websocket 開発ガイド: 複数人によるオンライン スケジュール管理機能の実装
はじめに:
現代生活の速いペースとマルチタスクの要件に対応して、スケジュールの調整や調整が必要になることがよくあります。多人数オンラインスケジュール管理機能により、複数人での共同作業やリアルタイムでのスケジュール共有が可能となり、業務効率が向上します。この記事では、GolangとWebsocketの技術を使って複数人でのオンラインスケジュール管理機能を実現する方法と具体的なコード例を紹介します。
まず、空の Golang プロジェクトを作成し、プロジェクトのルート ディレクトリで次のコマンドを使用して新しい Go モジュールを初期化する必要があります:
go mod init schedule
go get -u github.com/gin-gonic/gin go get -u github.com/gorilla/websocket
という名前のファイルを作成し、そのファイルに次のコードを追加します。
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") }
/ws パスに Websocket ルートを登録しました。ルーティング処理機能では、アップグレードHTTP接続をWebsocket接続にアップグレードし、クライアントと確立された接続を取得します。
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 を使用してすべての接続を保存します。新しい接続が確立されると、その接続がマッピング テーブルに追加されます。同時に、無限ループを通じてクライアントからのメッセージを読み取り、そのメッセージをすべての接続にブロードキャストします。
という名前のファイルを作成し、そのファイルに次のコードを追加します。
<!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>
この記事では、Golang と Websocket テクノロジーを使用して、複数人によるオンライン スケジュール管理機能を実装する方法を紹介します。まずWebsocketサーバーを作成し、接続処理とメッセージブロードキャスト機能を実装しました。次に、フロントエンドにシンプルなインターフェイスを実装して、機能をテストしました。この記事を通じて、読者が Golang と Websocket を使用して同様の機能を実現する方法とテクニックを理解し、習得できることを願っています。
以上がgolang Websocket 開発ガイド: 複数人オンラインスケジュール管理機能の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。