[Go言語]Goroutineで複数リクエストを受け取るサーバーを作ろう!

こんにちは。KOUKIです。

とある企業でGo言語を主軸とした開発チームで働いています。

Go言語はシンプルな言語で、サーバーコードなどを組み込みのnetパッケージを使えば、簡単に実装できます。

そして、Go言語の顔である「Goroutine」を使うと、クライアントから複数のリクエストを受け取るサーバーコードを簡単に書けます!

事前準備

ワークスペースを作りましょう。

Goroutineを使う前

早速、コードを公開します。まずはGoroutineを使わないバージョンです。

続いて、clientコードです。

これらをterminalを開いて実行します。

サーバーからのレスポンスを標準出力に表示できました。ここまではOKです。

しかし、もう一つterminalを開いて、clientコードを実行します。

何も表示されません。terminal2でリクエストを送っているため、terminal3の接続が待ちの状態になっているからです。

これをGoroutineを使って解決します。

サーバーコードにGoroutineを使う

サーバーコードを以下のように修正すればOKです。

handlerConnの呼び出しに「go」キーワードをつける、ただそれだけです。

一度、プログラムをCtrl+cで停止してから、同じように実行してみましょう。

今度はリクエストを受け取れるようになりました!

面白いですね!

終わりに

Goroutineを使えば、このように色々な物を同時実行できるようになります。Go言語プログラマなら極め得ておくべき技術ですね^^

それでは、また!

関連記事

オススメ書籍