Skip to content

Latest commit

 

History

History

demo-socket.io

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Steps

$ npm install
$ gulp
$ node server

API

Старт сервера с использованием Node https

import * as fs from "fs";
import * as https from "https";
import * as socketIO from "socket.io";

const privateKey  = fs.readFileSync("/ssl/key.pem", "utf8");
const certificate = fs.readFileSync("/ssl/cert.pem", "utf8");

const credentials = {key: privateKey, cert: certificate};

https.createServer(credentials).listen(4040);

const io = socketIO.listen(https);

Событие 'connection' (синоним 'connect')

Сработает при подключении клиента

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

Class: Socket

Событие 'disconnect'

Сработает при отключении клиента

io.on('connection', (socket) => {
  socket.on('disconnect', () => {
    // ...
  });
});
socket.on(eventName, callback)

Добавляет обработчик для указанного события

socket.on('sign', (data) => {
  console.log(data);
});

Подключение к серверу

import io from 'socket.io-client';
const socket = io.connect('https://localhost:4040');

Class: io.Socket

Событие 'disconnect'

Сработает при разрыве соединения с сервером

socket.on('disconnect', (reason) => {
  // ...
});
Событие 'connect'

Сработает при успешном переподключении

socket.on('connect', () => {
  // ...
});
socket.id

Уникальный идентификатор сокета

socket.on(eventName, callback)

Добавляет обработчик для указанного события

socket.on('signed', (data) => {
  console.log(data);
});

События, зарегестрированные в КриптоАРМ ГОСТ

Server events

События, генерируемые сервером

signed

Документ подписан

interface signed {
  id: number;
}

verified

Подпись проверена

interface certificate {
  serial: string; // серийный номер сертификата
  subjectFriendlyName: string; // дружественное имя владельца (CN)
  organizationName: string; // организация
  issuerFriendlyName: string; // дружественное имя издателя (CN)
  notAfter: number; // срок действия сертификата
  signatureAlgorithm: string; // алгоритм подписи
  signatureDigestAlgorithm: string; // хеш алгоритм подписи
  publicKeyAlgorithm: string; // алгоритм публичного ключа
  hash: string; // отпечаток
  key: boolean; // налиичие привязки к закрытому ключу
  status: boolean; // результат проверки
}

interface verified {
  id: number;
  signatureAlgorithm: string,
  certs: certificate[],
  digestAlgorithm: string,
  status: boolean,
  subject: string,
}

encrypted

Документ зашифрован

interface encrypted {
  id: number;
}

decrypted

Документ расшифрован

interface decrypted {
  id: number;
}

unavailable

Не удалось скачать файл

cancelled

Отмена операции для файла

interface cancelled {
  id: number;
}

error

Произошла ошибка

Client events

События, генерируемые клиентом

sign

Отправка докуентов на подпись

interface file {
  id: string; // уникальный идентификатор
  name: string; // имя файла
  url: string; // ссылка для загрузки файла
}

interface sign {
  method: string;
  params: {
    token: string;
    files: file[];
    extra: any;
    uploader: string; // ссылка для отправки подписанного файла
  }
  id: string;
}

verify

Отправка докуентов на проверку

interface file {
  id: string; // уникальный идентификатор
  name: string; // имя файла
  url: string; // ссылка для загрузки файла
}

interface verify {
  method: string;
  params: {
    token: string;
    files: file[];
  }
  id: string;
}

encrypt

Отправка докуентов на шифрование

interface file {
  id: string; // уникальный идентификатор
  name: string; // имя файла
  url: string; // ссылка для загрузки файла
}

interface encrypt {
  method: string;
  params: {
    token: string;
    files: file[];
    extra: any;
    uploader: string; // ссылка для отправки зашифрованного файла
  }
  id: string;
}

decrypt

Отправка докуентов на расшифрование

interface file {
  id: string; // уникальный идентификатор
  name: string; // имя файла
  url: string; // ссылка для загрузки файла
}

interface decrypt {
  method: string;
  params: {
    token: string;
    files: file[];
    uploader: string; // ссылка для отправки расшифрованного файла
  }
  id: string;
}

upload

Отправка документов

interface signer {
  subjectFriendlyName: string;
  issuerFriendlyName: string;
  notBefore: Date;
  notAfter: Date;
  digestAlgorithm: string;
  signingTime: Date;
  subjectName: string;
  issuerName: string;
}

interface formData {
  extra: string;
  file: stream;
  id: string;
  signers?: signer[];
}

interface post {
  formData: formData;
  url: string; // ссылка для отправки файла
}