本文へスキップ
バージョン: 4.x

サーバーのインストール

情報

最新のリリースは現在4.7.5で、2024年3月にリリースされました。

リリースノートはこちらをご覧ください。

前提条件

システムにNode.jsがインストールされていることを確認してください。現在の長期サポート(LTS)リリースが理想的な出発点です。こちらを参照してください。

情報

少なくともNode.js 10が必要です。それより古いバージョンはサポートされなくなりました。

インストール

最新のリリースをインストールするには

npm install socket.io

特定のバージョンをインストールするには

npm install socket.io@version

追加パッケージ

デフォルトでは、Socket.IO はwsパッケージによって提供されるWebSocketサーバーを使用します。

このパッケージと一緒にインストールできるオプションのパッケージが2つあります。これらのパッケージはバイナリアドオンであり、特定の操作を改善します。最も一般的なプラットフォームでは事前にビルドされたバイナリが利用できるため、マシンにC++コンパイラをインストールする必要はありません。

  • bufferutil:WebSocketフレームのデータペイロードのマスクとアンマスクなどの操作を効率的に実行できます。
  • utf-8-validate:仕様で要求されるように、メッセージに有効なUTF-8が含まれているかを効率的に確認できます。

これらのパッケージをインストールするには

npm install --save-optional bufferutil utf-8-validate

これらのパッケージはオプションです。利用できない場合は、WebSocketサーバーはJavaScriptの実装にフォールバックします。詳細についてはこちらを参照してください。

その他のWebSocketサーバー実装

wsと同じAPI(特にhandleUpgradeメソッド)を公開するWebsocketサーバー実装を使用できます。

たとえば、(現在は非推奨の)uwsパッケージのフォークであるeiowsパッケージを使用できます。

npm install eiows

そして、wsEngineオプションを使用します。

const { Server } = require("socket.io");
const eiows = require("eiows");

const io = new Server(3000, {
wsEngine: eiows.Server
});

この実装は、デフォルトの実装よりもパフォーマンスとメモリ使用量の改善を「許可しますが、保証しません」。通常どおり、ご自身の使用状況に合わせてベンチマークしてください。

µWebSockets.jsとの使用

バージョン4.4.0から、Socket.IOサーバーはµWebSockets.jsサーバーにバインドできるようになりました。

インストール

npm install uWebSockets.js@uNetworking/uWebSockets.js#v20.4.0

使用方法

const { App } = require("uWebSockets.js");
const { Server } = require("socket.io");

const app = App();
const io = new Server();

io.attachApp(app);

io.on("connection", (socket) => {
// ...
});

app.listen(3000, (token) => {
if (!token) {
console.warn("port already in use");
}
});

その他

依存関係ツリー

サーバーの基本的なインストールには**21**個のパッケージが含まれており、そのうち**6**個は当社のチームが保守しています。

└─┬ socket.io@4.7.2
├─┬ accepts@1.3.8
│ ├─┬ mime-types@2.1.35
│ │ └── mime-db@1.52.0
│ └── negotiator@0.6.3
├── base64id@2.0.0
├─┬ cors@2.8.5
│ ├── object-assign@4.1.1
│ └── vary@1.1.2
├─┬ debug@4.3.4
│ └── ms@2.1.2
├─┬ engine.io@6.5.2
│ ├── @types/cookie@0.4.1
│ ├─┬ @types/cors@2.8.13
│ │ └── @types/node@20.4.6 deduped
│ ├── @types/node@20.4.6
│ ├── accepts@1.3.8 deduped
│ ├── base64id@2.0.0 deduped
│ ├── cookie@0.4.2
│ ├── cors@2.8.5 deduped
│ ├── debug@4.3.4 deduped
│ ├── engine.io-parser@5.2.1
│ └─┬ ws@8.11.0
│ ├── UNMET OPTIONAL DEPENDENCY bufferutil@^4.0.1
│ └── UNMET OPTIONAL DEPENDENCY utf-8-validate@^5.0.2
├─┬ socket.io-adapter@2.5.2
│ └── ws@8.11.0 deduped
└─┬ socket.io-parser@4.2.4
├── @socket.io/component-emitter@3.1.0
└── debug@4.3.4 deduped
情報

サードパーティパッケージの型宣言が含まれているため、TypeScriptユーザーがライブラリを簡単に使用できます(ただし、パッケージサイズがわずかに大きくなります)。

参照:https://github.com/microsoft/types-publisher/issues/81#issuecomment-234051345

推移的なバージョン

engine.ioパッケージは、低レベル接続(HTTPロングポーリングまたはWebSocket)を管理するエンジンを提供します。参照:動作原理

socket.ioバージョンengine.ioバージョンwsバージョン
4.7.x6.5.x8.11.x
4.6.x6.4.x8.11.x
4.5.x6.2.x8.2.x
4.4.x6.1.x8.2.x
4.3.x6.0.x8.2.x
4.2.x5.2.x7.4.x
4.1.x5.1.x7.4.x
4.0.x5.0.x7.4.x
3.1.x4.1.x7.4.x
3.0.x4.0.x7.4.x
2.5.x3.6.x7.4.x
2.4.x3.5.x7.4.x