ServerSentEventサンプル


ServerSentEventのサーバーとクライアントをGo言語だけで作ってみた。

ServerSentEventとは?

詳しくは http://www.w3.org/TR/eventsource/ ここ参照!

要するに?

サーバーから任意のタイミングでブラウザ上のアプリに情報をプッシュするための仕組みですー。 Websocketのダウンストリーム片方向だけバージョンみたいなイメージ。

じゃ、Websocketの方がいいじゃん!って思うかもしれませんが・・・。

Websocketはいろいろ考慮すべき課題が残るんだよね・・・。 繋がってるのに通信できない状態や切断された場合にそれらを拾って再接続するのは JSクライアントサイドの責任なので実装が比較的面倒です。

SSEの場合クライアントの再接続とか自動でやってくれますし、 サーバーへのアップストリーム方向の通信手段はいろいろ選択肢があるし。

何がすごいの?

ブラウザ側の実装ってJavascriptで書く必要があるんだけど、 そこをGopherJSのサードパーティライブラリを使って書いてみました。

Javascriptに詳しくなくてもプッシュ通信を使ったWebアプリが作れるね!

まとめ

repos: https://github.com/nobonobo/go-sse-sample

git clone https://github.com/nobonobo/go-sse-sample
cd go-sse-sample
make build # output: client.js
make run   # sseサーバー起動

別のターミナルで以下のコマンドでブラウザでのクライアント動作を見れるよ!

make open

GopherJSのことはまた改めてまとめますー。