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 サイトの他の関連記事を参照してください。