Golang Websocket チュートリアル: オンライン投稿機能の開発方法
はじめに:
インターネットの急速な発展に伴い、ますます多くのアプリケーションが、実際の機能を実現する必要があります。時刻通信機能。ネットワーク アプリケーションでは、Websocket テクノロジが一般的に使用される通信プロトコルになっています。この記事は、Golang 言語を使用してオンライン投稿機能を開発し、Websocket を使用してリアルタイムの対話を実現する方法を読者に教えることを目的としています。
1. Websocket の概要
Websocket は、ブラウザとサーバーの間に永続的な接続を確立してリアルタイム通信を実現できる全二重通信プロトコルです。従来の HTTP プロトコルと比較して、Websocket は待ち時間が短く、スループットが高いため、リアルタイム データを処理するアプリケーション シナリオに適しています。
2. 開発環境のセットアップ
開発を開始する前に、Golang 開発環境をセットアップする必要があります。
- Golang のインストール: 公式 Web サイト https://golang.org/doc/install にアクセスして、オペレーティング システムに適した Golang バージョンをダウンロードしてインストールします。
-
関連ライブラリのインストール:
go get github.com/gorilla/websocket
3. プロジェクト構造の設計
オンライン投稿機能を開発する前に、プロジェクトのディレクトリ構造を計画する必要があります。プロジェクト。
- main.go - handler.go - template - index.html
4. コードの実装
- #main.go
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) } }
#handler.go 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) }
template/index.html<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>在线投稿功能</title> </head> <body> <h1 id="在线投稿功能">在线投稿功能</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>
#5. テストの実行
##コマンド ラインでプロジェクト ディレクトリを入力し、実行します次のコマンドでサーバーを起動します。
go run main.go
- ブラウザを開き、アドレス http://localhost:8080/ を入力してページにアクセスします。 6. まとめ
- 以上の手順で、Golang をベースとしたオンライン投稿機能の開発が完了しました。 Websocketによるリアルタイムのメッセージ配信を実現しており、ユーザーがテキストボックスにメッセージを入力して送信ボタンをクリックすると、即座にメッセージがサーバーに送信され、ページ上に表示されます。
以上がgolang Websocket チュートリアル: オンライン投稿機能の開発方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Golangは高い並行性タスクにより適していますが、Pythonには柔軟性がより多くの利点があります。 1.Golangは、GoroutineとChannelを介して並行性を効率的に処理します。 2。Pythonは、GILの影響を受けるが、複数の並行性メソッドを提供するスレッドとAsyncioに依存しています。選択は、特定のニーズに基づいている必要があります。

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

seetgolangforhighperformance andconcurrency、ithyforbackendservicesandnetworkプログラミング、selectthonforrapiddevelopment、datascience、andmachinelearningduetoistsversitydextentextensextensentensiveLibraries。

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

GolangとPythonはどのような側面で使いやすく、より滑らかな学習曲線を持っていますか? Golangは、高い並行性と高性能のニーズにより適しており、学習曲線はC言語の背景を持つ開発者にとって比較的穏やかです。 Pythonは、データサイエンスと迅速なプロトタイピングにより適しており、初心者にとって学習曲線は非常にスムーズです。

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

Golangは迅速な発展と同時プログラミングに適していますが、Cは極端なパフォーマンスと基礎となる制御を必要とするプロジェクトにより適しています。 1)Golangの並行性モデルは、GoroutineとChannelを介した同時性プログラミングを簡素化します。 2)Cのテンプレートプログラミングは、一般的なコードとパフォーマンスの最適化を提供します。 3)Golangのごみ収集は便利ですが、パフォーマンスに影響を与える可能性があります。 Cのメモリ管理は複雑ですが、コントロールは問題ありません。

speed、効率、およびシンプル性をspeedsped.1)speed:gocompilesquilesquicklyandrunseffictient、理想的なlargeprojects.2)効率:等系dribribraryreducesexexternaldedenciess、開発効果を高める3)シンプルさ:


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版
便利なJavaScript開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
