12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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 = ("<br> <b> nick : " + (element.nick ? element.nick : "Anon") + "<br> </b> message : " +
- (element.message ? element.message : "Empty message") + ("<br> 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)
- }
- }
|