Инициализация сервера
После установки библиотеки сервера 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