123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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()
|