Go 言語でネットワーク プログラミング機能を学び、WebSocket 通信を実装する
はじめに
Go 言語は強力なプログラミング言語として、ネットワーク プログラミングの分野で広く使用されています。豊富なネットワークプログラミング機能とライブラリを提供しており、開発者はさまざまなネットワーク通信機能を簡単に実装できます。この記事では、Go 言語で一般的に使用されるネットワーク プログラミング関数をいくつか紹介し、WebSocket 通信を実装するための例を組み合わせます。
1. ネットワーク プログラミング関数
net.Listen
関数シグネチャ: func Listen(ネットワーク, アドレス文字列) (リスナー, エラー)
目的:指定されたネットワーク アドレスをリッスンし、Listener オブジェクトを返します。
例:
listener, err := net.Listen("tcp", "127.0.0.1:8080") if err != nil { log.Fatal(err) } defer listener.Close()
Accept
関数シグネチャ: func (l *TCPListener) Accept() (Conn, error)
目的: 接続リクエストを受け入れ、Conn オブジェクトを返す
例:
conn, err := listener.Accept() if err != nil { log.Fatal(err) } defer conn.Close()
gorilla/websocket
ライブラリを提供します。 2. WebSocket 通信の実装
インストール gorilla/websocket
Library
コマンド ラインで次のコマンドを実行します。
go get -u github.com/gorilla/websocket
サーバー側のコード
package main import ( "log" "net/http" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } func websocketHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Fatal(err) } defer conn.Close() for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println(err) break } log.Printf("Received message: %s ", message) if err := conn.WriteMessage(messageType, message); err != nil { log.Println(err) break } } } func main() { http.HandleFunc("/websocket", websocketHandler) log.Fatal(http.ListenAndServe(":8080", nil)) }
クライアント側のコード
package main import ( "log" "net/url" "github.com/gorilla/websocket" ) func main() { u := url.URL{Scheme: "ws", Host: "localhost:8080", Path: "/websocket"} conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil) if err != nil { log.Fatal(err) } defer conn.Close() for i := 0; i < 5; i++ { message := []byte("Hello from client") if err := conn.WriteMessage(websocket.TextMessage, message); err != nil { log.Fatal(err) } _, receivedMessage, err := conn.ReadMessage() if err != nil { log.Fatal(err) } log.Printf("Received message from server: %s", receivedMessage) } }
上記の 2 つを実行しますコード ファイル。これにより、WebSocket プロトコルに基づいたクライアントとサーバー間の通信が可能になります。クライアントはサーバーにメッセージを送信し、サーバーからメッセージを受信し、これを 5 回繰り返します。
概要
この記事では、Go 言語で一般的に使用されるネットワーク プログラミング関数をいくつか紹介し、WebSocket 通信を例とともに実装します。この知識を学ぶことで、より深く理解し、実際のネットワーク プログラミングに適用できるようになります。 Web アプリケーションを開発する場合でも、その他のネットワーク通信シナリオを開発する場合でも、これらのネットワーク プログラミング機能を習得すると、開発効率が大幅に向上します。学習を通じて Go 言語のネットワークプログラミングの特徴をさらに理解し、実際のプロジェクトに柔軟に適用できることを期待します。
以上がGo言語でネットワークプログラミング機能を学び、WebSocket通信を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。