Go言語のWASM (Web Assembly) で HTTP GET を呼び出すと,以下のようなデッドロックが発生する.
all goroutines are asleep - deadlock!
解決策として,goroutine を使って呼び出せば良いとされている. それで実際にやってみたのがこのリポジトリの内容である.
makeを実行すると,serverとsite/main.wasmが作成される.serverを実行すると,localhost:8080に HTTP サーバが建てられる(make startを実行しても良い).site以下のファイルをそのまま返す簡易HTTPサーバ.cmd/server/main.goにソースコードあり.
http://localhost:8080にアクセスし,テキストフィールドに適当なURLを入力し,「Get Content」ボタンを押すと「Content」の下に内容が表示される.
Makefile- ビルドファイル.
httpget.go- 単純に HTTP GET しているファイル.
src/wasm/main.go- wasmから HTTP GET を goroutine で呼び出している.
src/server/main.go- 簡易 HTTP サーバのプログラム.
site/index.html- サンプルの html ファイル.
site/sample.jssite/index.htmlのアクションを定義し,wasm を呼び出している.
site/wasm_exec.js${GO_INSTALLED_DIR}/misc/wasm/wasm_exec.jsからコピーしたもの.