リアルタイムな通信を行う際に何かと活躍するプロトコル WebSocket。 .NETには System.Net.WebSockets として組み込まれており、簡単に使い始めることができる。 しかし、WebSocketにおいて「切断」という概念は取り扱いに注意が必要だ。 本記事ではSystem.Net.WebSocketsが切断をどのように扱っているか見ていく。 WebSocketにおける正しい切断 WebSocket は Socket という名前からも想像できるように、基となるのはTCP Socketだ。 よってTCP Socketを閉じれば切断できるが、これは正しい切断ではない。 RFC 6455 - The WebSocket Protocol の "Section 1.4 Closing Handshake" によると切断時にもHandshake処理があり、流れは次のようになる。 切