Spec-Zone.ru › Socket.IO 2

Инициализация сервера

После установки библиотеки сервера Socket.IO, вы можете инициировать сервер. Полный список опций можно найти здесь.

Синтаксис

CommonJS

const httpServer = require("http").createServer();const io = require("socket.io")(httpServer, {  // ...});io.on("connection", (socket) => {  // ...});httpServer.listen(3000);

ES модули

Пожалуйста, см. здесь для включения ECMAScript-модулей в вашем проекте Node.js.

import { createServer } from "http";import Server from "socket.io";const httpServer = createServer();const io = new Server(httpServer, {  // ...});io.on("connection", (socket) => {  // ...});httpServer.listen(3000);

TypeScript

Сначала вам нужно установить типы: npm i --save-dev @types/socket.io

import { createServer } from "http";import Server = require("socket.io");import { Socket } from "socket.io";const httpServer = createServer();const io = new Server(httpServer, {  // ...});io.on("connection", (socket: Socket) => {  // ...});httpServer.listen(3000);

Инициализация

Отдельно

const options = { /* ... */ };const io = require('socket.io')(options);io.on('connection', socket => { /* ... */ });io.listen(3000);

Вы также можете передать порт в качестве первого аргумента:

const options = { /* ... */ };const io = require('socket.io')(3000, options);io.on('connection', socket => { /* ... */ });

Это неявно запускает сервер Node.js HTTP, к которому можно получить доступ через io.httpServer.

Присоединение к существующему HTTP серверу

const server = require('http').createServer();const options = { /* ... */ };const io = require('socket.io')(server, options);io.on('connection', socket => { /* ... */ });server.listen(3000);

С HTTPS:

const fs = require('fs');const server = require('https').createServer({  key: fs.readFileSync('/tmp/key.pem'),  cert: fs.readFileSync('/tmp/cert.pem')});const options = { /* ... */ };const io = require('socket.io')(server, options);io.on('connection', socket => { /* ... */ });server.listen(3000);

С Express

const app = require('express')();const server = require('http').createServer(app);const options = { /* ... */ };const io = require('socket.io')(server, options);io.on('connection', socket => { /* ... */ });server.listen(3000);

Дополнительная информация здесь.

С Koa

const app = require('koa')();const server = require('http').createServer(app.callback());const options = { /* ... */ };const io = require('socket.io')(server, options);io.on('connection', socket => { /* ... */ });server.listen(3000);

Дополнительная информация здесь.

Заметные опции

Полный список опций можно найти здесь. Вот те, которые вы, скорее всего, будете использовать:

perMessageDeflate опция

Значение по умолчанию: false

Сервер WebSocket, предоставляемый пакетом ws, поддерживает расширение permessage-deflate, которое позволяет клиенту и серверу договариваться об алгоритме сжатия и его параметрах, а затем выборочно применять его к данным полезной нагрузки каждого сообщения WebSocket.

Начиная с Socket.IO v2.4.0 (и в v3), это расширение сейчас отключено по умолчанию, потому что оно добавляет значительную нагрузку на производительность и потребление памяти (и разработчики ws рекомендуют включать его только в том случае, если это действительно необходимо).

Для предыдущих версий вы можете отключить его с помощью:

const io = require('socket.io')({  perMessageDeflate: false});

maxHttpBufferSize опция

Значение по умолчанию: 10e7

Это определяет, сколько байтов может содержать сообщение, прежде чем сокет будет закрыт. По умолчанию 10e7 (100 МБ). Вы можете увеличить или уменьшить это значение в зависимости от ваших потребностей.

const io = require('socket.io')({  maxHttpBufferSize: 1e5});

Соответствует опции maxPayload пакета ws.

© 2014–2020 Automattic
Licensed under the MIT License.
https://socket.io/docs/v2/server-initialization

Spec-Zone.ru

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