-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
157 lines (135 loc) · 7.73 KB
/
index.html
File metadata and controls
157 lines (135 loc) · 7.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1">
<link rel="shortcut icon" type="image/ico" href="favicon.ico" />
<title>Roman Sorokin - web-developer</title>
<link rel="stylesheet" href="styles.css">
<link rel="shortcut icon" type="image/ico" href="favicon.ico" />
</head>
<body>
<div class="page">
<aside class="aside">
<h1>Роман Сорокин</h1>
<img class="aside__photo" src="img/roman_sorokin.jpg">
<h2>Web-разработчик</h2>
<h4>Контакты</h4>
<ul>
<li>Телеграмм: <a href="https://t.me/r1000ru">@r1000ru</a></li>
</ul>
</aside>
<main class="main">
<!--
<h2>Opensource-проекты</h2>
<h3>Консольный клиент для Nats</h3>
<p>
Брокер запросов и сообщений <a href="https://nats.io">Nats</a> - показал себя отличным инструментом как для организации Pub/Sub взаимодействия,
так и для организации связи между микросервисами. Для тестов и отправки/приема отладочной информации, мною написан консольный клиент
<a href="https://github.com/r1000ru/nats-term">nats-term</a>. Его основные возможности:
</p>
<ul>
<li>Отправка запросов в канал и получение ответов</li>
<li>Прослушивание канала на предмет запросов и отправка ответов в канал отправителя запроса</li>
<li>Подписка на канал</li>
<li>Публикация сообщений в канал</li>
</ul>
<p>
Клиент написан на NodeJS и требует чтобы она была установлена на компьютере пользователя. Для использования клиента, достаточно один раз установить :
его глобально:
</p>
<pre>npm install -g nats-term</pre>
<p>
После установки, для его запуска достаточно выполнить команду:
</p>
<pre>nats-term -h 127.0.0.1 -p 4222</pre>
<p>
Приведенные выше хост и порт - указывать не обязательно, они выставлены по умолчанию. Ключи хоста и порта следует использовать только в том случае, если они отличны от дефолтных.
</p>
<h3>API Сервер JsonRPC для взаимодействия через HTTP(s) и Nats</h3>
<p>Подробная документация доступна на <a href="https://github.com/r1000ru/jsonrpc-server-http-nats">GitHub</a></p>
<p> Установка:</p>
<pre>
npm install jsonrpc-server-http-nats --save
</pre>
<p>Использование</p>
<pre>
const JsonRPCServer = require('jsonrpc-server-http-nats');
// Создаем экземпляр сервера
var server = new JsonRPCServer();
// Обработчик на метод Ping
server.on('Ping', (response) => {
let error = null;
let result = 'Pong';
response(error, result);
});
// Запустим сервер по HTTP
server.listenHttp();
// Запустим сервер по nats
server.listenNats('nats://127.0.0.1:4222', 'TestChannel')
</pre>
<h3>Клиент JsonRPC API для взаимодействия с сервером через HTTP(s) и Nats</h3>
<p>Подробная документация доступна на <a href="https://github.com/r1000ru/jsonrpc-client-http-nats">GitHub</a></p>
<p> Установка:</p>
<pre>
npm install jsonrpc-client-http-nats --save
</pre>
<p>Использование</p>
<pre>
// Подключаем библиотеку
const JsonRPCClient = require('jsonrpc-client-http-nats');
// Создаем клиент для обращения по HTTP(s)
let httpClient = JsonRPCClient.http('http://127.0.0.1:8080');
// И(или) создадаем клиент для обращения через Nats с запросами в канал MyChannel
let natsClient = JsonRPCClient.nats('nats://127.0.0.1:4222', 'MyChannel');
// Отправляем запрос через HTTP(s)
httpClient.request('FirstMethod', { title: 'MyTitle' }, (err, result)=>{
console.log(err, result);
})
// Отправляем запрос через Nats
natsClient.request('SecondMethod', { title: 'MyData' }, (err, result)=>{
console.log(err, result);
})
</pre>
<h3>Валидатор входящих параметров</h3>
<p>
<a href="https://github.com/r1000ru/params-checker">Модуль</a> предназначен для обработки данных, приходящих на API-сервер. Важное качество - ориентирован на клиенты, которые работают с типизированными языками (не позволяет строке присвоить False и т.п.)
Поддерживает проверку следующих типов данных (для каждой проверки можно указать отдельно, обязательность и возможность Null`а):
</p>
<ul>
<li>Строки, с проверкой длины</li>
<li>Чисел, с проверкой лимитов значений</li>
<li>Булевый тип</li>
<li>Списки - значение должно быть одним из перечисленных</li>
<li>Массив, с проверкой размерности и типа передаваемых данных</li>
<li>Объекта, с проверкой типа каждого свойства</li>
</ul>
<pre>
const PC = require('params-checker');
let inputParams = {
title: 'ParamsValidator',
version: 1,
inProduction: false,
is_support: 'num'
}
let checker = PC.obj(true, false { // Объект, обязателелен, не может быть NULL
title: PC.str(true, true, 1, 64), // Строка, обязательна, может быть NULL, от 1 до 64 символов
version: PC.num(false, false, 1), // Число, не обязательно, не менее 1-го
inProduction: PC.bool(true, false), // Булевый параметр, обязателен, не может быть NULL
is_support: PC.enum(false, false, ['str','num','arr','obj','bool','enum']) // Одно из возможных значений, не обязательно, не может быть NULL
})
var checkedParams;
try {
checkedParams = checker.check(inputParams);
} catch (e) {
console.log('Error: ' + e.message);
return;
}
console.log(checkedParams);
</pre>
-->
</main>
</div>
</body>
</html>