Golang Websocket チュートリアル: オンライン投稿機能の開発方法
はじめに:
インターネットの急速な発展に伴い、ますます多くのアプリケーションが、実際の機能を実現する必要があります。時刻通信機能。ネットワーク アプリケーションでは、Websocket テクノロジが一般的に使用される通信プロトコルになっています。この記事は、Golang 言語を使用してオンライン投稿機能を開発し、Websocket を使用してリアルタイムの対話を実現する方法を読者に教えることを目的としています。
1. Websocket の概要
Websocket は、ブラウザとサーバーの間に永続的な接続を確立してリアルタイム通信を実現できる全二重通信プロトコルです。従来の HTTP プロトコルと比較して、Websocket は待ち時間が短く、スループットが高いため、リアルタイム データを処理するアプリケーション シナリオに適しています。
2. 開発環境のセットアップ
開発を開始する前に、Golang 開発環境をセットアップする必要があります。
関連ライブラリのインストール:
go get github.com/gorilla/websocket
3. プロジェクト構造の設計
オンライン投稿機能を開発する前に、プロジェクトのディレクトリ構造を計画する必要があります。プロジェクト。
- main.go - handler.go - template - index.html
4. コードの実装
package main import ( "html/template" "log" "net/http" "github.com/gorilla/websocket" ) var ( upgrader = websocket.Upgrader{} clients = make(map[*websocket.Conn]bool) broadcast = make(chan []byte) homeTemplate *template.Template ) func homeHandler(w http.ResponseWriter, r *http.Request) { homeTemplate.Execute(w, nil) } func websocketHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } defer conn.Close() clients[conn] = true for { _, msg, err := conn.ReadMessage() if err != nil { log.Println(err) delete(clients, conn) return } broadcast <- msg } } func handleMessages() { for { msg := <-broadcast for client := range clients { err := client.WriteMessage(websocket.TextMessage, msg) if err != nil { log.Println(err) client.Close() delete(clients, client) } } } } func main() { // 配置文件路径 homeTemplate = template.Must(template.ParseFiles("template/index.html")) http.HandleFunc("/", homeHandler) http.HandleFunc("/ws", websocketHandler) go handleMessages() err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal(err) } }
package main import ( "net/http" "path/filepath" ) func homeHandler(w http.ResponseWriter, r *http.Request) { filePath, _ := filepath.Abs("template/index.html") http.ServeFile(w, r, filePath) }
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>在线投稿功能</title> </head> <body> <h1>在线投稿功能</h1> <textarea id="message-input" rows="5" cols="30"></textarea> <button id="send-btn">发送</button> <br> <ul id="message-list"></ul> </body> <script> var socket = new WebSocket("ws://localhost:8080/ws"); socket.onmessage = function (event) { var messageList = document.getElementById("message-list"); var messageItem = document.createElement("li"); messageItem.innerText = event.data; messageList.appendChild(messageItem); }; document.getElementById("send-btn").addEventListener("click", function () { var messageInput = document.getElementById("message-input"); var message = messageInput.value; socket.send(message); }); </script> </html>
##コマンド ラインでプロジェクト ディレクトリを入力し、実行します次のコマンドでサーバーを起動します。
go run main.go
以上がgolang Websocket チュートリアル: オンライン投稿機能の開発方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。