stage3.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. function jsonPost(url, data) {
  2. return new Promise((resolve, reject) => {
  3. const x = new XMLHttpRequest();
  4. x.onerror = () => reject(new Error('jsonPost failed'))
  5. //x.setRequestHeader('Content-Type', 'application/json');
  6. x.open("POST", url, true);
  7. x.send(JSON.stringify(data))
  8. x.onreadystatechange = () => {
  9. if (x.readyState === XMLHttpRequest.DONE && x.status === 200){
  10. resolve(JSON.parse(x.responseText))
  11. } else if (x.status !== 200){
  12. reject(new Error('status is not 200'))
  13. }
  14. }
  15. });
  16. }
  17. const url = "http://students.a-level.com.ua:10012";
  18. let nextId = 0;
  19. sendButton.addEventListener('click', () => {
  20. let nickValue = nickInput.value;
  21. let messageValue = messageInput.value;
  22. const addZero = data => data < 10 ? `0${data}` : data;
  23. const buildDate = date => `${date.getDate()}/${date.getMonth()+1}/${date.getFullYear()} ${addZero(date.getHours())}:${addZero(date.getMinutes())}:${addZero(date.getSeconds())}`;
  24. const buildMessage = (nick, message, time) => {
  25. return `<p>nick - ${nick}, message - ${message}, date - ${buildDate(new Date(time))}</p>`;
  26. }
  27. jsonPost(url, {func: 'addMessage', nick: nickValue, message: messageValue});
  28. let messagesArray = jsonPost(url, {func: 'getMessages', messageId: nextId});
  29. messagesArray.then(messages => {
  30. for (const message of messages.data) {
  31. chatMessages.insertAdjacentHTML('afterbegin', buildMessage(message.nick, message.message, message.timestamp));
  32. }
  33. nextId = messages.nextMessageId;
  34. });
  35. });