|
@@ -0,0 +1,90 @@
|
|
|
|
+let $nickname = document.querySelector('#nick')
|
|
|
|
+let sendBtn = document.querySelector('#sendButton');
|
|
|
|
+let $msg = document.querySelector('#msg')
|
|
|
|
+let msgHolder = document.querySelector('#msgHolder')
|
|
|
|
+
|
|
|
|
+function jsonPost(url, data) {
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
+ var x = new XMLHttpRequest();
|
|
|
|
+ x.onerror = () => reject(new Error('jsonPost failed'))
|
|
|
|
+ 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 messageDataCreator(message) {
|
|
|
|
+ return {
|
|
|
|
+ func: 'addMessage',
|
|
|
|
+ nick: $nickname.value,
|
|
|
|
+ message: message,
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function showMessagesList(arr) {
|
|
|
|
+ let $container = document.createElement('div')
|
|
|
|
+ for(let msg of arr) {
|
|
|
|
+ let $div = document.createElement('div')
|
|
|
|
+ $div.className = 'msg'
|
|
|
|
+ let $p1 = document.createElement('p')
|
|
|
|
+ let $p2 = document.createElement('p')
|
|
|
|
+ $p1.innerHTML = msg.nick + ':'
|
|
|
|
+ $p2.innerHTML = msg.message
|
|
|
|
+ $div.append($p1, $p2)
|
|
|
|
+ $container.append($div)
|
|
|
|
+ }
|
|
|
|
+ msgHolder.prepend($container)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+async function fetchData() {
|
|
|
|
+ let id = 0;
|
|
|
|
+ let resp = await jsonPost("http://students.a-level.com.ua:10012", {func: "getMessages", messageId: id})
|
|
|
|
+ let {data} = await resp
|
|
|
|
+ id = resp.nextMessageId
|
|
|
|
+ let list = data.slice(data.length - 50).reverse()
|
|
|
|
+ showMessagesList(list)
|
|
|
|
+ async function updMessages() {
|
|
|
|
+ let resp = await jsonPost("http://students.a-level.com.ua:10012", {func: "getMessages", messageId: id})
|
|
|
|
+ let res = await resp
|
|
|
|
+ if(res.nextMessageId > id) {
|
|
|
|
+ id = res.nextMessageId
|
|
|
|
+ showMessagesList(res.data)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let interval = setInterval(async () => {
|
|
|
|
+ await updMessages()
|
|
|
|
+ }, 3000)
|
|
|
|
+ sendBtn.onclick = async () => {
|
|
|
|
+ let resp = await jsonPost("http://students.a-level.com.ua:10012",
|
|
|
|
+ messageDataCreator($msg.value)
|
|
|
|
+ )
|
|
|
|
+ $msg.value = ''
|
|
|
|
+ }
|
|
|
|
+ return list
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+function getSomeData(data) {
|
|
|
|
+ let currentData = data
|
|
|
|
+ return function (){
|
|
|
|
+ return currentData
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+async function chatMaker() {
|
|
|
|
+ showMessagesList(await fetchData())
|
|
|
|
+}
|
|
|
|
+chatMaker()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|