Socket.IO とは|切れても自分で繋ぎ直す双方向の通信のライブラリ
Socket.IO は、サーバーと遊ぶ側のあいだで双方向にやり取りするためのライブラリです。使える通信の道を自分で選び、切れたときは自分で繋ぎ直します。
- 分類
- ゲームエンジン・フレームワーク
- 制作の流れ
- 制作
- 日本語対応
- 日本語非対応
- 費用
- 無料(MIT ライセンス)
- 公式サイト
- https://socket.io/確認日 2026-09-18
Socket.IO の概要
Socket.IO(ソケットアイオー)は、サーバーと遊ぶ側のあいだで双方向にやり取りするためのライブラリです。公式サイトは、掲げる一文を「Bidirectional and low-latency communication for every platform(あらゆる環境に向けた、双方向で待ち時間の短い通信)」としています。
通信の道は3つあります。HTTP の長い問い合わせ、WebSocket、WebTransport です。Socket.IO は、ブラウザができること、そしてその通信網の様子(WebSocket や WebTransport をふさいでいる網があります)に応じて、使えるうちで最も良いものを自分で選びます。
著作権の表示は「Copyright © 2026 Socket.IO」です。
Socket.IO の特徴
Socket.IO はゲームを描く機能を持ちません
Socket.IO が受け持つのは、サーバーと遊ぶ側のあいだで合図と値をやり取りする部分です。絵や音を描く機能も、ゲームの状態を持つ仕組みも持ちません。
Socket.IO は WebSocket そのものではありません
公式ドキュメントは、注意として「Socket.IO is NOT a WebSocket implementation.(Socket.IO は WebSocket の実装ではありません)」と書いています。使えるときは WebSocket を通信の道に使いますが、その上に独自の情報を1つ1つの荷に足します。
そのため、ふつうの WebSocket の相手から Socket.IO のサーバーへはつながらず、Socket.IO の相手からふつうの WebSocket のサーバーへもつながりません。ふつうの WebSocket のサーバーが要る場合として、公式ドキュメントは ws と µWebSockets.js を挙げています。
もう1つの注意は、携帯端末の裏で動かし続ける用途を想定していないことです。Socket.IO はサーバーへの接続を開いたまま保つので、電池の減りが大きくなります。この用途には FCM のような、通知のための仕組みを使うよう案内されています。
Socket.IO が足している機能
公式ドキュメントは、ふつうの WebSocket に対して足している機能を5つ挙げています。
| 機能 | 中身 |
|---|---|
| HTTP の長い問い合わせへの切り替え | WebSocket でつながらないときに切り替わります。10年以上前に企画が始まった当時、これが使われる一番の理由でした。いまは97%を超えるブラウザが WebSocket に対応していますが、設定の誤った中継の向こうにいてつながらないという報告は今も届くとしています |
| 自動の繋ぎ直し | 双方が気づかないまま通じなくなることがあるため、鼓動のような合図で状態を定期的に確かめます。切れたときは、間を少しずつ広げながら自分で繋ぎ直します。サーバーへ一度に負荷をかけないためです |
| 荷の溜め置き | 切れているあいだの荷は自動で溜められ、繋ぎ直したときに送られます |
| 受け取りの返事 | 合図を送って返事を受け取る書き方があります。socket.emit("hello", "world", (response) => {…}) のように書き、受け手は callback("got it") を呼びます。socket.timeout(5000) を挟めば、決めた時間で返事が無い場合も扱えます |
| 一斉送信と場の分け方 | サーバー側から、つながっている全員へ io.emit("hello")、特定の部屋へ io.to("news").emit("hello") と送れます。複数の機械に分けたときも同じように働きます。io.of("/admin") のように名前の空間を分ければ、1つの接続の上で処理を分けられます |
Socket.IO の通信の大きさ
socket.emit("hello", "world") は、42["hello","world"] という1つの WebSocket の枠として送られます。先頭の 4 は Engine.IO の「message」の種別、2 は Socket.IO の「message」の種別、残りは引数の並びを JSON の文字列にしたものです。1通ごとに数バイトが足されます。独自の読み書きの部品を使えば、さらに減らせます。
ブラウザ向けの配布物そのものの大きさは、圧縮した状態で 10.4kB です。
Socket.IO が使える言語
サーバー側の実装は、JavaScript(Node.js)のほか、Deno・Java・Python・Golang・Rust のものが公式ドキュメントに並んでいます。
遊ぶ側の実装は、JavaScript(ブラウザ・Node.js・React Native)と、WeChat のミニプログラム向け・Java・C++・Swift・Dart・Python・.Net・Rust・Kotlin・PHP・Golang のものが並んでいます。
Socket.IO の費用とライセンス
Socket.IO は無料です。公式のリポジトリは、ライセンスを MIT ライセンスとしています。
MIT ライセンスとは
MIT ライセンス(MIT License)は、著作権の表示とライセンス文を残せば、商用も含めて自由に使ってよいとする短い決まりです。
| 項目 | 内容 |
|---|---|
| 費用 | 無料 |
| ライセンス | MIT ライセンス |
| 版 | 4.x(3.x・2.x の資料も残っています) |
| 配布物の大きさ | ブラウザ向けは圧縮して 10.4kB |
| 著作権の表示 | Copyright © 2026 Socket.IO |
公式サイトには支援の入口と、配信網からの読み込み、管理のための画面(Admin UI)があります。言語の切り替えは英語・スペイン語・フランス語・ブラジルのポルトガル語・中国語で、日本語はありません。
- Socket.IO|公式サイトhttps://socket.io/
情報源
- Socket.IO — 公式サイト(掲げている一文・3つの性質・版の並び・言語の切り替え・著作権の表示)https://socket.io/確認日 2026-09-18
- Introduction — Socket.IO 公式ドキュメント(3つの通信の道と選び方・WebSocket との違いと2つの注意・足している5つの機能・通信の大きさ・使える言語の一覧)https://socket.io/docs/v4/確認日 2026-09-18
- socketio/socket.io — 公式リポジトリ(ライセンス・質問の受け付け先・安全に関わる報告の出し方)https://github.com/socketio/socket.io確認日 2026-09-18