Spec-Zone.ru › Socket.IO 4

Установка сервера

Предварительные требования

Убедитесь, что на вашей системе установлен 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API