123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- // jsonPost с fetch и async
- async function jsonPost(url, data) {
- let response = await fetch(url, {
- method: 'POST',
- body: JSON.stringify(data),
- })
- if (response.status == 200) {
- return response.json()
- } else if (response.status != 200) {
- return new Error('status is not 200')
- }
- }
- // 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'))
- // }
- // }
- // })
- // }
- function addMessage(messageObj) {
- message = messageTemplate.content.cloneNode(true)
- message.querySelector('.nickname').textContent = messageObj.nick
- message.querySelector('.message-text').textContent = messageObj.message
- message.querySelector('.time').textContent = (new Date(messageObj.timestamp)).toString().slice(4, 24)
- messagesArea.append(message)
- }
- //отэто всё на then
- // send.onclick = () => {
- // if(nickname.value !== '' && messageText.value !== '')
- // jsonPost("http://students.a-level.com.ua:10012", {func: 'addMessage', nick: nickname.value, message: messageText.value})
- // .then(() => {
- // nickname.value = ''
- // messageText.value = ''
- // })
- // }
- // let savedId
- // jsonPost("http://students.a-level.com.ua:10012", {func: "getMessages", messageId: 0})
- // .then(({data, nextMessageId}) => {
- // savedId = nextMessageId
- // for (let message of data) {
- // addMessage(message)
- // }
- // })
- // setInterval(() => {
- // console.log(savedId)
- // jsonPost("http://students.a-level.com.ua:10012", {func: "getMessages", messageId: savedId})
- // .then(({data, nextMessageId}) => {
- // savedId = nextMessageId
- // if (data.length > 0) {
- // for (let message of data) {
- // addMessage(message)
- // }
- // }
- // })
- // }, 5000)
- //отэто всё с async
- let delay = (ms) => new Promise((fulfill) => setTimeout(() => fulfill(ms), ms))
- async function sendMessage(nick, message) {
- if(nick !== '' && message !== '') {
- await jsonPost("http://students.a-level.com.ua:10012", {func: 'addMessage', nick, message})
- }
- }
- async function getMessages(messageId) {
- let {data, nextMessageId} = await jsonPost("http://students.a-level.com.ua:10012", {func: "getMessages", messageId})
- for (let message of data) addMessage(message)
- savedId = nextMessageId
- }
- async function sendAndCheck() {
- await sendMessage(nickname.value, messageText.value)
- messageText.value = ''
- await getMessages(savedId)
- }
- async function checkLoop() {
- while (true) {
- await delay(5000)
- await getMessages(savedId)
- }
- }
- let savedId = 0
- getMessages(savedId)
- send.onclick = sendAndCheck
- checkLoop()
|