123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- 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);
- }
- };
-
-
|