Backend day1
go言語を触り始め、A Tour of goを軽く勉強したものの、いまいちgoの利便性、また何に使えるのかのか分からず、その理解を深めるために今回、オライリー本、(「Go言語によるWebアプリケーション」)を手に取ってみた。まずは第1章のチャットアプリから開発してみる。
概要: Go言語の標準パッケージである、net/httpパッケージを使って、シンプルなチャットアプリを作成する。まず、webサーバーを作成する。このサーバーがhtmlをファイルをクライアントに提供し、WebSocketを利用して、メッセージのやりとりをする。
Goの特徴
- ハイパフォーマンスかつ並行処理を得意とし、サーバー側のアプリケーションに向いている。
webサーバーには大きく分けて2つ役割がある。
- クライアントがブラウザ上で利用するHTML、jsを提供する事。
- クライアントとの間でwebsocketを使った通信を行う事。
そもそも、go言語を触るというより、バックエンドの勉強が本題であり、その手段でしかない。色々とバックエンドの前提の知識が乏しいので、迂回しながら開発していく。
まず、http通信の内容、
- DNSサーバーにアクセス先のIPアドレスを尋ねる。
- 1のIPアドレスを元に、サーバーにアクセスする。
- HTTP requestを行う。
- HTTP respoenseがサーバーから返ってくる。
goのnet/http パッケージを用い、webサーバーを立てるのはすごく簡単。
使うパッケージは最低2つ。
http.HandleFunc("/", func)
http.ListenAndServe(":portNum", nil)
順に説明すると、1つめは第一引数のパスが呼ばれた時に、第二引数のハンドラが呼ばれ、それぞれにhtttp response,http requestが引数に入り、それらの内容を処理する。
二つ目のhttp.ListenAndServe関数は指定したport番号を監視し、レスポンスがあればコンテンツを表示し、なければnilを返す。