-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
22 changed files
with
1,148 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
|
||
<!DOCTYPE html> | ||
|
||
<script> | ||
let eventSource; | ||
let likeElem; | ||
let watchElem; | ||
let commentsElem; | ||
|
||
function start() { | ||
if (!window.EventSource) { | ||
// Internet Explorer или устаревшие браузеры | ||
alert("Ваш браузер не поддерживает EventSource."); | ||
return; | ||
} | ||
|
||
likeElem = document.getElementById("likeCount"); | ||
watchElem = document.getElementById("watchCount"); | ||
commentsElem = document.getElementById("commentList"); | ||
|
||
eventSource = new EventSource('sse/acorndiscussion'); | ||
|
||
eventSource.addEventListener('like', function(e) { | ||
likeElem.innerHTML = e.data; | ||
}); | ||
|
||
eventSource.addEventListener('watch', function(e) { | ||
watchElem.innerHTML = e.data; | ||
}); | ||
|
||
eventSource.addEventListener('newComment', function(e) { | ||
addComment(e.data); | ||
}); | ||
|
||
} | ||
|
||
|
||
function addComment(msg) { | ||
commentsElem.innerHTML += msg; | ||
} | ||
|
||
function likeClick(){ | ||
let xhr = new XMLHttpRequest(); | ||
xhr.open('GET', 'sse/addLike'); | ||
xhr.send(); | ||
} | ||
|
||
function sendComment(){ | ||
let formData = new FormData(document.forms.comments); | ||
|
||
let json = JSON.stringify({ | ||
name: formData.get("name"), | ||
Comment: formData.get("comment") | ||
}); | ||
|
||
let xhr = new XMLHttpRequest(); | ||
xhr.open("POST", "/sse/postcomment"); | ||
xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8'); | ||
xhr.send(json); | ||
|
||
} | ||
|
||
window.onload = start; | ||
|
||
</script> | ||
|
||
<img src="images/zl1.jpg" width="150" height="150" alt="Вино и желуди"> | ||
<div> | ||
<span id="likeCount">0</span> <a href="#" style="text-decoration: none;" onclick="likeClick();return false;" title="Like"><span>❤</span></a> | ||
</div> | ||
<div>Сейчас смотрят: <span id="watchCount">0</span></div> | ||
<form name="comments"> | ||
<label for="name">Имя:</label> | ||
<input id="name" name="name" value=""> | ||
<br> | ||
<label for="comment">Комментарий:</label> | ||
<div> | ||
<textarea name="comment" id="comment" style="font-family:sans-serif;font-size:1.2em;"> | ||
</textarea> | ||
<button type="button" onclick="sendComment()">Отправить</button> | ||
</div> | ||
</form> | ||
<div id="commentList"></div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
|
||
&Пластилин Перем БрокерСообщенийСобытийСервера; | ||
&пластилин Перем ФабрикаОтветов; | ||
|
||
Перем КоличествоЛайков; | ||
Перем ИмяТопика; | ||
Перем СейчасСмотрят; | ||
Перем Комментарии; | ||
|
||
&Контроллер("/sse") | ||
&Отображение(Шаблон = "./hwapp/view/main_sse.html") | ||
Процедура ПриСозданииОбъекта(&Пластилин ТопикиСерверныхСобытий) | ||
|
||
ИмяТопика = "/sse/acorndiscussion"; | ||
КоличествоЛайков = 3; | ||
СейчасСмотрят = 0; | ||
|
||
ТопикиСерверныхСобытий.Добавить(ИмяТопика, | ||
Новый Действие(ЭтотОбъект, "НовоеПодключениеССЕ"), | ||
Новый Действие(ЭтотОбъект, "ОтключениеССЕ")); | ||
|
||
Комментарии = Новый ТаблицаЗначений(); | ||
Комментарии.Колонки.Добавить("Имя"); | ||
Комментарии.Колонки.Добавить("Комментарий"); | ||
Комментарии.Колонки.Добавить("Дата"); | ||
|
||
КонецПроцедуры | ||
|
||
Процедура НовоеПодключениеССЕ(Сессия, ИД) Экспорт | ||
СейчасСмотрят = СейчасСмотрят + 1; | ||
|
||
Сообщение = ФабрикаОтветов.СерверноеСобытие(); | ||
Сообщение.ТипСобытия("like") | ||
.ДобавитьСтроку(Строка(КоличествоЛайков)); | ||
БрокерСообщенийСобытийСервера.ОтправитьСообщениеПоИдСоединения(ИД, Сообщение); | ||
|
||
Сообщение = ФабрикаОтветов.СерверноеСобытие(); | ||
Сообщение.ТипСобытия("watch") | ||
.ДобавитьСтроку(Строка(СейчасСмотрят)); | ||
БрокерСообщенийСобытийСервера.ОтправитьСообщениеВсем(ИмяТопика, Сообщение); | ||
|
||
Для Каждого Комментарий из Комментарии Цикл | ||
Сообщение = СообщениеИзСтрокиКомментария(Комментарий); | ||
БрокерСообщенийСобытийСервера.ОтправитьСообщениеПоИдСоединения(ИД, Сообщение); | ||
КонецЦикла; | ||
|
||
КонецПроцедуры | ||
|
||
Процедура ОтключениеССЕ(Сессия, ИД) Экспорт | ||
СейчасСмотрят = СейчасСмотрят - 1; | ||
|
||
Сообщение = ФабрикаОтветов.СерверноеСобытие(); | ||
Сообщение.ТипСобытия("watch") | ||
.ДобавитьСтроку(Строка(СейчасСмотрят)); | ||
БрокерСообщенийСобытийСервера.ОтправитьСообщениеВсем(ИмяТопика, Сообщение); | ||
КонецПроцедуры | ||
|
||
&ТочкаМаршрута("") | ||
Процедура ОсновнаяТочка() Экспорт | ||
|
||
КонецПроцедуры | ||
|
||
&ТочкаМаршрута("postcomment") | ||
Процедура ЗапоститьКомментарий(ТелоЗапросОбъект) Экспорт | ||
ДобавитьКомментарий(ТелоЗапросОбъект.name, ТелоЗапросОбъект.comment); | ||
КонецПроцедуры | ||
|
||
&ТочкаМаршрута("addLike") | ||
Процедура ПоставитьЛайк() Экспорт | ||
КоличествоЛайков = КоличествоЛайков + 1; | ||
Попытка | ||
Сообщение = ФабрикаОтветов.СерверноеСобытие(); | ||
Сообщение.ТипСобытия("like") | ||
.ДобавитьСтроку(Строка(КоличествоЛайков)); | ||
БрокерСообщенийСобытийСервера.ОтправитьСообщениеВсем(ИмяТопика, Сообщение); | ||
Исключение | ||
Сообщить(ОписаниеОшибки()); | ||
КонецПопытки; | ||
КонецПроцедуры | ||
|
||
Процедура ОповеститьОКомментарии(СтрокаКомментария) | ||
|
||
Сообщение = СообщениеИзСтрокиКомментария(СтрокаКомментария); | ||
|
||
БрокерСообщенийСобытийСервера.ОтправитьСообщениеВсем(ИмяТопика, Сообщение); | ||
|
||
КонецПроцедуры | ||
|
||
Функция СообщениеИзСтрокиКомментария(СтрокаКомментария) | ||
СтрокаШаблон = "<div class='comment'><div class='comment-header'><span class='comment-name'>%1</span> - <span class='comment-date'>%2</span></div> | ||
|<div class='comment-body'>%3</div></div>"; | ||
Текст = СтрШаблон(СтрокаШаблон, СтрокаКомментария.Имя, СтрокаКомментария.Дата, СтрокаКомментария.Комментарий); | ||
|
||
Сообщение = ФабрикаОтветов.СерверноеСобытие(); | ||
Сообщение.ТипСобытия("newComment") | ||
.ДобавитьСтроку(Текст); | ||
|
||
Возврат Сообщение; | ||
КонецФункции | ||
|
||
Процедура ДобавитьКомментарий(Имя, Комментарий) | ||
|
||
НовыйКомментарий = Комментарии.Добавить(); | ||
НовыйКомментарий.Имя = Имя; | ||
НовыйКомментарий.Комментарий = Комментарий; | ||
НовыйКомментарий.Дата = ТекущаяДата(); | ||
|
||
ОповеститьОКомментарии(НовыйКомментарий); | ||
|
||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.