Go 言語を使用して Websocket の長時間接続維持を実装する方法
Go 言語を使用して Websocket の長時間接続維持を実装する方法
Websocket は、HTML5 が提供するサーバーとクライアント間の双方向通信を実現するプロトコルです。実際の開発では、多くのシナリオでは、リアルタイムでデータをプッシュしたり、インスタント メッセージング機能を実装したりするために、長時間の接続を維持する必要があります。この記事では、Go 言語を使用して Websocket の長時間接続維持を実装する方法を、具体的なコード例を含めて紹介します。
1. Go 言語開発環境を構築する
まず、Go 言語開発環境を構築する必要があります。具体的な操作についてはGo言語公式サイトのインストールガイドを参照してください。
2. WebSocket サーバーの作成
次に、WebSocket サーバーの作成を開始します。まず、github.com/gorilla/websocket
ライブラリをインポートし、グローバル upgrader
変数を定義して、HTTP 接続を WebSocket 接続にアップグレードする必要があります。
import ( "log" "net/http" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, }
次に、クライアントの WebSocket 接続リクエストを処理する処理関数 wsHandler
を作成します。
func wsHandler(w http.ResponseWriter, r *http.Request) { // 升级HTTP连接为WebSocket连接 conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } // 循环读取客户端发送的消息 for { // 读取消息 msgType, msg, err := conn.ReadMessage() if err != nil { log.Println(err) return } // 打印消息 log.Printf("Received: %s ", msg) // 响应消息 err = conn.WriteMessage(msgType, msg) if err != nil { log.Println(err) return } } }
3. WebSocket サーバーの起動
次に、上記の wsHandler
関数を HTTP サービスの処理関数として登録し、サーバーのリスニング ポートを起動する必要があります。
func main() { http.HandleFunc("/ws", wsHandler) // 注册处理函数 log.Fatal(http.ListenAndServe(":8000", nil)) // 启动服务器 }
4. WebSocket クライアントの作成
最後に、サーバーの機能をテストするための単純な WebSocket クライアントを作成します。 WebSocket クライアントは JavaScript またはその他のツールを使用して作成できますが、ここでは JavaScript を例に挙げます。
// 创建WebSocket连接 const socket = new WebSocket('ws://localhost:8000/ws'); // 打开连接 socket.addEventListener('open', function (event) { socket.send('Hello Server'); }); // 接收消息 socket.addEventListener('message', function (event) { console.log('Received: ' + event.data); }); // 关闭连接 socket.addEventListener('close', function (event) { console.log('Connection closed'); });
上記は、Go 言語を使用して Websocket の長い接続を維持するコード例です。この例を通じて、単純な WebSocket の長い接続を確立し、サーバーとクライアントの間でリアルタイムの双方向通信を実現できます。実際の開発では、特定のニーズに応じてコードを拡張および最適化し、さまざまなシナリオやビジネス ニーズに適応できます。
以上がGo 言語を使用して Websocket の長時間接続維持を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

ポインター構文とviperライブラリの使用における問題への取り組みGO言語でプログラミングするとき、特にポインターの構文と使用を理解することが重要です...

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

GO言語で効率的なキー価値ペアストレージを実装する正しい方法GO言語でRedisと同様のキー値ペアメモリを開発するときに最高のパフォーマンスを実現する方法...

現在のGOプログラミングエコシステムにおけるGOフレームワークのオーディエンスステータスの分析では、開発者はビジネスニーズを満たすために適切なフレームワークを選択することに直面しています。今日私たち...

GO言語のパフォーマンス最適化戦略大規模なURLアクセスこの記事では、GO言語を使用して大規模なURLアクセスを処理する問題に関するパフォーマンス最適化ソリューションを提案します。 CSVからの既存のプログラム...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...
