var inputNick = document.getElementById('nick') var inputMessage = document.getElementById('message') var sendBtn = document.getElementById('send') const divChat = document.getElementById('chat') async function sendMessage(sendNick, sendMessage) { await jsonPost("http://students.a-level.com.ua:10012", { func: 'addMessage', nick: sendNick, message: sendMessage }) } sendBtn.onclick = async function sendAndCheck() { sendMessage(inputNick.value, inputMessage.value) getMessages() } let nextMessageId = 0 async function getMessages() { let resMessageId; await jsonPost("http://students.a-level.com.ua:10012", { func: 'getMessages', messageId: nextMessageId }).then(res => { res.data.forEach(element => { var div = document.createElement("div"); div.innerHTML = ("
nick : " + (element.nick ? element.nick : "Anon") + "
message : " + (element.message ? element.message : "Empty message") + ("
time : " + new Date((element.timestamp)).toLocaleString())) divChat.prepend(div) }) resMessageId = res.nextMessageId }); //console.log("nextMes перед проверкой", nextMessageIdFirst) if (resMessageId > nextMessageId) { nextMessageId = resMessageId } // console.log("nextMess после проверки", nextMessageIdFirst) } const delay = ms => { return new Promise(resolve => setTimeout(() => resolve(), ms)) } async function checkLoop() { await getMessages().then(() => delay(2000)).then(checkLoop) } checkLoop() // function jsonPost(url, data) { // return new Promise((resolve, reject) => { // var x = new XMLHttpRequest(); // x.onerror = () => reject(new Error('jsonPost failed')) // //x.setRequestHeader('Content-Type', 'application/json'); // x.open("POST", url, true); // x.send(JSON.stringify(data)) // x.onreadystatechange = () => { // if (x.readyState == XMLHttpRequest.DONE && x.status == 200) { // resolve(JSON.parse(x.responseText)) // } else if (x.status != 200) { // reject(new Error('status is not 200')) // } // } // }) // } //Прогуглить и разобраться с fetch и заменить внутренности jsonPost на код, использующий fetch вместо XMLHttpRequest async function jsonPost(url, data) { try { const response = await fetch(url, { method: 'POST', body: JSON.stringify(data) }) if (response.ok) { const postJson = await response.json() return postJson } } catch (error) { throw new Error('Error: ', error) } }