12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- async 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'));
- }
- }
- })
- }
- async function sendMessage(nick, message) {
- jsonPost("http://students.a-level.com.ua:10012", {
- func: 'addMessage',
- nick: nick,
- message: message,
- author: 'chat'
- });
- }
- const dateToDataTimeLocal = date => (date.getTime() - date.getTimezoneOffset() * 60000).toISOString().slice(0, -1);
- let timestamp = new Date();
- let nextMessageId = 0;
- async function getMessages() {
- await jsonPost("http://students.a-level.com.ua:10012", {
- func: 'getMessages',
- messageId: nextMessageId
- }).then(res => {
- res.data.forEach(el => {
- let div = document.createElement('div');
- div.innerHTML = `${el.nick} : ${el.message}:<br> ${timestamp.toGMTString()}`;
- chat.prepend(div);
- nextMessageId++;
- console.log(nextMessageId);
- });
- });
- }
- send.onclick = async function sendAndCheck() {
- sendMessage(nick.value, message.value);
- getMessages();
- };
- async function checkLoop() {
- await getMessages().then(() => delay(setTimeout (3000)).then(checkLoop));
- }
- checkLoop();
|