|
@@ -0,0 +1,223 @@
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+let lastMessageId = 0;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ async function sendMessage(nick, message){
|
|
|
+ let res = await jsonPost("http://students.a-level.com.ua:10012", {
|
|
|
+ func: 'addMessage', nick: nick,
|
|
|
+ message: message
|
|
|
+ })
|
|
|
+ console.log(res.nextMessageId);
|
|
|
+}
|
|
|
+
|
|
|
+send.onclick = () => {
|
|
|
+ let nickInput = nick.value;
|
|
|
+ let msgInput = msg.value;
|
|
|
+ if (nickInput && msgInput) { sendAndCheck(nickInput, msgInput) }
|
|
|
+ msg.value = '';
|
|
|
+};
|
|
|
+
|
|
|
+ async function getMessages(){
|
|
|
+ let res = await jsonPost("http://students.a-level.com.ua:10012", {
|
|
|
+ func: 'getMessages', messageId: lastMessageId
|
|
|
+ })
|
|
|
+ lastMessageId = res.nextMessageId;
|
|
|
+ historyDraw(res.data);
|
|
|
+}
|
|
|
+
|
|
|
+function historyDraw(array) {
|
|
|
+ let history = array.reverse().map(item => `<div class='postWrapper'><div class='timeWrapper'>${dateTransform(item.timestamp)}</div> <b>${item.nick}:</b>  ${item.message}</div>`);
|
|
|
+ chat.insertAdjacentHTML('afterbegin', history.join(''));
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+function dateTransform(date) {
|
|
|
+ date = new Date(date);
|
|
|
+ return ((date.getHours() < 10 ? ('0' + date.getHours() ) : date.getHours()) + ':' + (date.getMinutes() < 10 ? ('0' + date.getMinutes() ) : date.getMinutes()) + ' ' + (date.getDate() < 10 ? ('0' + (date.getDate())) : date.getDate() )+ '.' + ((date.getMonth() + 1) < 10 ? ('0' + (date.getMonth() + 1)) : (date.getMonth() + 1)) + '.' + date.getFullYear());
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+async function sendAndCheck(nick, message) {
|
|
|
+ sendMessage(nick, message);
|
|
|
+ getMessages();
|
|
|
+}
|
|
|
+const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms));
|
|
|
+
|
|
|
+
|
|
|
+async function checkLoop() {
|
|
|
+ while (true) {
|
|
|
+ await delay(5000);
|
|
|
+ getMessages(lastMessageId);
|
|
|
+}
|
|
|
+}
|
|
|
+checkLoop();
|
|
|
+
|
|
|
+
|
|
|
+async function jsonPost(url, data) {
|
|
|
+ let response=await fetch(url, {
|
|
|
+ method: 'POST',
|
|
|
+ body: JSON.stringify(data) })
|
|
|
+
|
|
|
+ if (response.ok) {
|
|
|
+ return await response.json();
|
|
|
+} else {
|
|
|
+ alert("Ошибка HTTP: " + response.status);
|
|
|
+}
|
|
|
+};
|
|
|
+
|
|
|
+
|