You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 5-network/12-server-sent-events/article.md
+17-17Lines changed: 17 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,15 +41,15 @@ data: в две строки
41
41
- Сообщения разделяются двойным переносом строки `\n\n`.
42
42
- Чтобы разделить сообщение на несколько строк, мы можем отправить несколько `data:` подряд (третье сообщение).
43
43
44
-
На практике, сложные сообщения обычно отправляются в формате JSON, указывая переносы строк внутри.
44
+
На практике сложные сообщения обычно отправляются в формате JSON, указывая переносы строк внутри.
45
45
46
46
Например:
47
47
48
48
```js
49
49
data: {"user":"Джон","message":"Первая строка*!*\n*/!* Вторая строка"}
50
50
```
51
51
52
-
...Так что можно считать, что в каждом `data:`указано ровно одно сообщение.
52
+
...Так что можно считать, что в каждом `data:`содержится ровно одно сообщение.
53
53
54
54
Для каждого сообщения генерируется событие `message`:
55
55
@@ -58,7 +58,7 @@ let eventSource = new EventSource("/events/subscribe");
58
58
59
59
eventSource.onmessage=function(event) {
60
60
console.log("Новое сообщение", event.data);
61
-
// этот код вывет в консоль 3 сообщения для данных, описанных выше
61
+
// этот код вывет в консоль 3 сообщения, описанных выше
62
62
};
63
63
64
64
// или eventSource.addEventListener('message', ...)
@@ -74,7 +74,7 @@ let source = new EventSource("https://another-site.com/events");
74
74
75
75
Сервер получит заголовок `Origin` и должен будет ответить с заголовком `Access-Control-Allow-Origin`.
76
76
77
-
Чтобы передать авторизирующие заголовки, нужно передать дополнительный аргумент`withCredentials`:
77
+
Чтобы послать авторизационные данные, следует установить дополнительную опцию`withCredentials`:
78
78
79
79
```js
80
80
let source =newEventSource("https://another-site.com/events", {
@@ -87,13 +87,13 @@ let source = new EventSource("https://another-site.com/events", {
87
87
88
88
## Переподключение
89
89
90
-
После создания,`new EventSource` подключается к серверу и, если соединение обрывается, -- переподключается.
90
+
После создания `new EventSource` подключается к серверу и, если соединение обрывается, -- переподключается.
91
91
92
92
Это очень удобно, так как нам не приходится беспокоиться об этом.
93
93
94
-
По умолчанию, между попытками возобновить соединение будет небольшая пауза в несколько секунд.
94
+
По умолчанию между попытками возобновить соединение будет небольшая пауза в несколько секунд.
95
95
96
-
Сервер может выставить рекомендуемую задержку, указав в ответе `retry:` (в милисекундах):
96
+
Сервер может выставить рекомендуемую задержку, указав в ответе `retry:` (в миллисекундах):
97
97
98
98
```js
99
99
retry:15000
@@ -102,7 +102,7 @@ data: Привет, я выставил задержку переподключ
102
102
103
103
Поле `retry:` может посылаться как вместе с данными, так и отдельным сообщением.
104
104
105
-
Браузер должен быть подождать окончания задержки перед попыткой переподключения. Если потеряно подключение к интернету, бразуер может дождаться его востанновления и затем попытаться переподключиться.
105
+
Браузеру следует ждать именно столько перед новой попыткой подключения. Если потеряно соединение с сетью, то бразуер может подождать его восстановления и затем попытаться переподключиться.
106
106
107
107
- Если сервер хочет остановить попытки переподключения, он должен ответить со статусом 204.
108
108
- Если браузер хочет прекратить соединение, он может вызвать `eventSource.close()`:
Второй аргумент - объект с одним свойством: `{ withCredentials: true }`, позволяет передавать вместе с запросом авторизирующие заголовки.
231
+
Второй аргумент - объект с одним свойством: `{ withCredentials: true }`. Он позволяет отправлять авторизационные данные в том числе и на другие домены.
232
232
233
233
В целом, кросс-доменная безопасность на таком же уровне, как у `fetch` и других методов работы с сетью.
234
234
@@ -254,17 +254,17 @@ let source = new EventSource(url, [credentials]);
254
254
: Соединение установлено.
255
255
256
256
`error`
257
-
: Потеряно соединение (произойдёт переподключение) или произошла фатальная ошибка. Мы можем обратиться к свойству `readyState`, чтобы проверить происходит ли переподключение.
257
+
: Потеряно соединение (произойдёт переподключение) или произошла фатальная ошибка. Мы можем обратиться к свойству `readyState`, чтобы проверить, происходит ли переподключение.
258
258
259
259
Сервер может выставить собственное событие с помощью `event:`. Такие события должны быть обработаны с помощью `addEventListener`, а не `on<event>`.
0 commit comments