|
@@ -0,0 +1,105 @@
|
|
|
|
+// 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()
|