ページ

2009年12月11日

ChromeとWebSocket

WebSocketの仕組みはまだ、ちゃんと調べていませんが、昨日の続き。Chromeを立ち上げてreloadすると、netstatで見たコネクションの数が一個だったのが二個に増えます。一つのブラウザで三個以上になることはありませんが、気持ち悪いです。

window.onunload = function() {ws.close();};などして、明示的に接続を切ってあげると、コネクションは二個に増殖することはありません。closeを呼んであげないと、サーバの方で接続がまだ維持されているかのように振る舞い続けます。つまり、readは待ち続けるし、writeに至ってはちゃんと書き込めたかのようにみえます。

で、機能のサンプルは書き込み、読み込みそれぞれ、goroutineが作られるので、うれしくありません。クライアントがcloseをコールするとちゃんと、読み込み・書き込みでエラーというかEOFとかでてくれます。

やっぱり、オブジェクトのメモリが破棄されるときはcloseして欲しいですが、メモリが破棄されていないのかもしれません。

まあ、接続は明示的に閉じろと言うことで。

0 件のコメント: