Установка сервера
Предварительные требования
Убедитесь, что на вашей системе установлен Node.js. Рекомендуется использовать текущую версию Long Term Support (LTS), ознакомьтесь с справочной информацией.
Необходима версия Node.js не ниже 10; более старые версии больше не поддерживаются.
Установка
Для установки последней версии:
- NPM
- Yarn
- pnpm
npm install socket.io
yarn add socket.io
pnpm add socket.io
Для установки конкретной версии:
- NPM
- Yarn
- pnpm
npm install socket.io@version
yarn add socket.io@version
pnpm add socket.io@version
Последние версии
- 4.5.0 (23.04.2022): Выпуск на GitHub / разница / npm
- 4.4.1 (06.01.2022): Выпуск на GitHub / разница / npm
- 4.4.0 (18.11.2021): Выпуск на GitHub / разница / npm
- 4.3.2 (08.11.2021): Выпуск на GitHub / разница / npm
- 4.3.1 (17.10.2021): Выпуск на GitHub / разница / npm
- 4.3.0 (15.10.2021): Выпуск на GitHub / разница / npm
- 4.2.0 (30.08.2021): Выпуск на GitHub / разница / npm
Дополнительные пакеты
По умолчанию Socket.IO использует WebSocket-сервер, предоставляемый пакетом ws.
Существует 2 дополнительных необязательных пакета, которые можно установить вместе с этим пакетом. Эти пакеты являются бинарными расширениями, которые улучшают определённые операции. Прекомпилированные бинарные файлы доступны для самых популярных платформ, поэтому вам необязательно устанавливать компилятор C++ на свой компьютер.
- bufferutil: Позволяет эффективно выполнять операции, такие как маскирование и размаскирование данных полезной нагрузки кадров WebSocket.
- utf-8-validate: Позволяет эффективно проверять, содержит ли сообщение валидный UTF-8, как того требует спецификация.
Для установки этих пакетов:
- NPM
- Yarn
- pnpm
npm install --save-optional bufferutil utf-8-validate
yarn add --optional bufferutil utf-8-validate
pnpm add -O bufferutil utf-8-validate
Обратите внимание, что эти пакеты необязательны; WebSocket-сервер переключится на реализацию на JavaScript, если они недоступны. Более подробную информацию можно найти здесь.
Другие реализации WebSocket-серверов
Можно использовать любую реализацию WebSocket-сервера, которая предоставляет такой же API, как ws (в частности, метод handleUpgrade).
Например, вы можете использовать пакет eiows, который является форком (теперь устаревшего) пакета uws:
- NPM
- Yarn
- pnpm
npm install eiows
yarn add eiows
pnpm add 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
- Yarn
- pnpm
npm install uWebSockets.js@uNetworking/uWebSockets.js#v20.4.0
yarn add uWebSockets.js@uNetworking/uWebSockets.js#v20.4.0
pnpm add uWebSockets.js@uNetworking/uWebSockets.js#v20.4.0
Использование:
const { App } = require("uWebSockets.js");
const { Server } = require("socket.io");
const app = new App();
const io = new Server();
io.attachApp(app);
io.on("connection", (socket) => {
// ...
});
app.listen(3000, (token) => {
if (!token) {
console.warn("port already in use");
}
});
Разное
Дерево зависимостей
Базовая установка сервера включает 23 пакета:
└─┬ socket.io@4.5.0
├─┬ accepts@1.3.8
│ ├─┬ mime-types@2.1.35
│ │ └── mime-db@1.52.0
│ └── negotiator@0.6.3
├── base64id@2.0.0
├─┬ debug@4.3.4
│ └── ms@2.1.2
├─┬ engine.io@6.2.0
│ ├── @types/cookie@0.4.1
│ ├── @types/cors@2.8.12
│ ├── @types/node@17.0.26
│ ├── accepts@1.3.8 deduped
│ ├── base64id@2.0.0 deduped
│ ├── cookie@0.4.2
│ ├─┬ cors@2.8.5
│ │ ├── object-assign@4.1.1
│ │ └── vary@1.1.2
│ ├── debug@4.3.4 deduped
│ ├─┬ engine.io-parser@5.0.3
│ │ └── @socket.io/base64-arraybuffer@1.0.2
│ └─┬ ws@8.2.3
│ ├── UNMET OPTIONAL DEPENDENCY bufferutil@^4.0.1
│ └── UNMET OPTIONAL DEPENDENCY utf-8-validate@^5.0.2
├── socket.io-adapter@2.4.0
└─┬ socket.io-parser@4.0.4
├── @types/component-emitter@1.2.11
├── component-emitter@1.3.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.5.x |
6.2.x |
8.2.x |
4.4.x |
6.1.x |
8.2.x |
4.3.x |
6.0.x |
8.2.x |
4.2.x |
5.2.x |
7.4.x |
4.1.x |
5.1.x |
7.4.x |
4.0.x |
5.0.x |
7.4.x |
3.1.x |
4.1.x |
7.4.x |
3.0.x |
4.0.x |
7.4.x |
2.4.x |
3.5.x |
7.4.x |
© 2014–2021 Automattic
Licensed under the MIT License.
https://socket.io/docs/v4/server-installation