diff --git a/lesson44.md b/lesson44.md
index c9d5f341d..75254c96e 100644
--- a/lesson44.md
+++ b/lesson44.md
@@ -1,4 +1,4 @@
-# Урок 44. Сокеты. Django channels.
+# Урок 44. Сокеты. Django Channels.

@@ -6,45 +6,45 @@
### Реализация чата
-Допустим вы хотите реализовать на своём сайте чат. Вы знаете протокол HTTP, который подразумевает систему запрос-ответ.
+Допустим, вы хотите реализовать на своём сайте чат. Вы знаете протокол HTTP, который подразумевает систему запрос-ответ.
-Но что делать если вам необходимо обновить информацию у клиента, хотя он её не запрашивал (Вам пишут сообщение, но вы не
-знаете когда именно оно будет написано)
+Но что делать, если необходимо обновить информацию у клиента, хотя он её не запрашивал? (Вам пишут сообщение, но вы
+не знаете, когда именно оно будет написано.)
Какие существуют варианты решения этой проблемы?
#### Множество запросов
-Мы можем делать большое кол-во запросов в надежде, что уже кто-то прислал нам сообщение
+Мы можем делать большое количество запросов в надежде, что кто-то уже прислал нам сообщение

Чем плох такой подход?
-Мы отправляем огромное кол-во запросов в "пустоту", расходуя ресурсы и выполняя не нужные запросы.
+Мы отправляем огромное количество запросов в "пустоту", расходуя ресурсы и выполняя ненужные запросы.
-#### Длинное соединение (long polling)
+#### Длинное соединение (Long Polling)
-Мы можем отдавать ответ только когда сообщение пришло.
+Мы можем отдавать ответ только тогда, когда сообщение пришло.

-Как это реализовать? Например, в коде можно использовать вечный цикл, и опрос какого либо хранилища, например `redis`.
+Как это реализовать? Например, в коде можно использовать вечный цикл и опрос какого-либо хранилища, например, `redis`.
Если данные появились, отдавать ответ.
Чем плох такой подход?
-"Пустые" HTTP запросы заменяются на "пустые" запросы к хранилищу данных, что ничем особо не лучше, мы всё еще тратим
-большое кол-во ресурсов. Большинство серверов и браузеров имеют ограничение на время запроса, что тоже является
+"Пустые" HTTP запросы заменяются на "пустые" запросы к хранилищу данных, что ничем особо не лучше. Мы всё еще тратим
+большое количество ресурсов. Большинство серверов и браузеров имеют ограничение на время запроса, что тоже является
проблемой для такого подхода.
#### Сокеты
-Сокет это специальный вид соединения поверх HTTP, для создания постоянного соединения.
+*Сокет* - это специальный вид соединения поверх HTTP для создания постоянного соединения.
Как это работает?
-
+[/не отображается/]: # ()
Клиент отправляет запрос на соединение с сокетом сервера.
@@ -54,10 +54,10 @@
Сервер рассылает это сообщение другим клиентам.
-В любой момент обе стороны могут разорвать соединение если это необходимо.
+В любой момент обе стороны могут разорвать соединение, если это необходимо.
-Запросы для сокетов проходят по протоколу WebSocket и выполняются на адреса, которые начинаются с `ws://`, а
-не `http://`
+Запросы для сокетов проходят по протоколу `WebSocket` и выполняются на адреса, которые начинаются с `ws://`, а
+не `http://`.

@@ -67,18 +67,18 @@
- Чаты
-- Приложения реального времени (Например отображение курса валют, стоимости криптовалют итд.)
+- Приложения реального времени (Например, отображение курса валют, стоимости криптовалют и т. д.)
-- IoT приложения (IoT - Internet of Things, интернет вещей, любые смарт предметы. Смарт-чайники, телевизоры, датчики
- дыма, кофе машины итд.)
+- IoT приложения (**IoT** - Internet of Things, интернет вещей, любые смарт предметы. Смарт-чайники, телевизоры, датчики
+ дыма, кофе машины и т.д.)
- Онлайн игры
-Но если необходимо, то можно применять где угодно.
+Но если необходимо, то можно применять, где угодно.
-## Django channels
+## Django Channels
-Естественно для Python существует готовый пакет для поддержки этого протокола с поддержкой Django
+Естественно для Python существует готовый пакет для поддержки этого протокола с поддержкой Django.
[Дока](https://channels.readthedocs.io/en/stable/)
@@ -88,9 +88,9 @@
### Туториал
-Давайте напишем простой чат при помощи Django
+Давайте напишем простой чат при помощи Django.
-Создаём виртуальное окружение, устанавливаем django и channels, создаём джанго проект
+Создаём виртуальное окружение, устанавливаем Django и channels, создаём Django проект:
```django-admin startproject chatsite```
@@ -107,15 +107,15 @@ chatsite/
wsgi.py
```
-Если вы используете версию django 2.2, то у вас не будет файла `asgi.py`, а он нам будет нужен. Не переживайте, мы его
+Если вы используете версию Django 2.2, то у вас не будет файла `asgi.py`, а он нам будет нужен. Не переживайте, мы его
создадим.
-Файлы `wsgi.py` и `asgi.py` необходимы для запуска серверов, `wsgi` - синхронных, `asgi` - асинхронных. Веб сокет это
+Файлы `wsgi.py` и `asgi.py` необходимы для запуска серверов, `wsgi` - синхронных, `asgi` - асинхронных. Веб-сокет - это
асинхронная технология.
-Создадим приложение для чата
+Создадим приложение для чата:
-```python3 manage.py startapp chat```
+```python manage.py startapp chat```
Получим примерно такую структуру файлов:
@@ -131,7 +131,7 @@ chat/
views.py
```
-Для простоты, предлагаю удалить всё кроме `views.py` и `__init__.py`
+Для простоты предлагаю удалить всё кроме `views.py` и `__init__.py`:
Полученная структура:
@@ -141,7 +141,7 @@ chat/
views.py
```
-Добавляем наше приложение в `INSTALLED_APPS` в `settings.py`
+Добавляем наше приложение в `INSTALLED_APPS` в `settings.py`:
```
# chatsite/settings.py
@@ -156,7 +156,7 @@ INSTALLED_APPS = [
]
```
-Создадим папку `templates`, добавим её в `settigns.py`
+Создадим папку `templates`, добавим её в `settigns.py`.
Создадим файл `index.html` в папке `templates`:
@@ -182,7 +182,7 @@ What chat room would you like to enter?
};
document.querySelector('#room-name-submit').onclick = function (e) {
- var roomName = document.querySelector('#room-name-input').value;
+ let roomName = document.querySelector('#room-name-input').value;
window.location.pathname = '/chat/' + roomName + '/';
};
@@ -190,20 +190,19 @@ What chat room would you like to enter?