WebSocketを双方向通信のために使うプロトコルでしょ、という感じのうっすら理解で誤魔化していた[1]のですが、IoTアプリケーションぽいものを作ることがあって、理解を深めるためにあらためて学びました、という投稿です。 今回はWebSocketでエコーするサーバーを、TCPライブラリだけを用いてRustで実装していきます。コードは以下です。 WebSocketとは RFC 6455で定義された、主に双方向でやり取りするために用いられる通信プロトコルです。 WebSocketが直接用いるプロトコルはTCPですが、ハンドシェイクはHTTP(S)によって行われます。WebSocketを使うプロトコルとして、MQTT over WebSocketやSTOMPなどがあります。 最近のWebアプリケーションではごく普通に用いられてます。企業サイトなどでよく見る問い合わせ用のチャットフォームなどは、
![Rustで実装しながら学ぶWebSocketの基本](https://cdn-ak-scissors.b.st-hatena.com/image/square/14a53e0e2589975e6ba5da7c6a6cadc1eadc4d3f/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--kOVjg07r--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3ARust%2525E3%252581%2525A7%2525E5%2525AE%25259F%2525E8%2525A3%252585%2525E3%252581%252597%2525E3%252581%2525AA%2525E3%252581%25258C%2525E3%252582%252589%2525E5%2525AD%2525A6%2525E3%252581%2525B6WebSocket%2525E3%252581%2525AE%2525E5%25259F%2525BA%2525E6%25259C%2525AC%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Aohke%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzlmMzI1YWRjYjkuanBlZw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png)