はじめに
実務でポーリングを実装していたのですが理解が曖昧だったので復習のためブログをかこうと思いました!
ついでに調べたらWebSocketという通信の方法も出てきたので違いを比べていこうと思います!
ポーリングとは
一定時間ごとにサーバへ情報を確認しにいく仕組みのこと
例えば、AIに文章を生成してもらう場合を想像してもらうとわかりやすいかとおもいます!!
- 3秒後:「生成終わった?」
- 6秒後:「まだ終わっていない?」
- 9秒後:「mada?」
- 12秒後:「おわったよ〜」→ 結果を表示!
つまり、定期的にサーバーへ問い合わせることを指します!
WebSocketとは?
サーバーと接続を維持して、双方向にリアルタイム通信できる仕組みのこと
ストリートファイターで見ていきましょう!
例えば、友達とオンラインで格闘ゲームをしているとして
1. 自分がパンチボタンを押して
2. ゲーム側が操作情報を送信する
3. 相手側にその情報が届く
4. 相手の画面にもパンチの動きが反映される
もし3秒ごとのポーリングだったら、相手のパンチが最大3秒近く遅れて見えてしまう可能性があって
めちゃくちゃハンデ負ってますよねw
まとめ
つまり何が違うというと
ポーリング: 「何か変わった?」と定期的に聞く。
WebSocket: 接続を維持して、変化があったらすぐ伝えられる。
ここでエンジニアとして覚えておきたいのは、「どちらが優れているか」ではなく「なぜその通信方法が必要なのか」 を考えることだと思いました!✨

