main.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. var inputNick = document.getElementById('nick')
  2. var inputMessage = document.getElementById('message')
  3. var sendBtn = document.getElementById('send')
  4. const divChat = document.getElementById('chat')
  5. async function sendMessage(sendNick, sendMessage) {
  6. await jsonPost("http://students.a-level.com.ua:10012", { func: 'addMessage', nick: sendNick, message: sendMessage })
  7. }
  8. sendBtn.onclick = async function sendAndCheck() {
  9. sendMessage(inputNick.value, inputMessage.value)
  10. getMessages()
  11. }
  12. let nextMessageId = 0
  13. async function getMessages() {
  14. let resMessageId;
  15. await jsonPost("http://students.a-level.com.ua:10012", { func: 'getMessages', messageId: nextMessageId }).then(res => {
  16. res.data.forEach(element => {
  17. var div = document.createElement("div");
  18. div.innerHTML = ("<br> <b> nick : " + (element.nick ? element.nick : "Anon") + "<br> </b> message : " +
  19. (element.message ? element.message : "Empty message") + ("<br> time : " + new Date((element.timestamp)).toLocaleString()))
  20. divChat.prepend(div)
  21. })
  22. resMessageId = res.nextMessageId
  23. });
  24. //console.log("nextMes перед проверкой", nextMessageIdFirst)
  25. if (resMessageId > nextMessageId) {
  26. nextMessageId = resMessageId
  27. }
  28. // console.log("nextMess после проверки", nextMessageIdFirst)
  29. }
  30. const delay = ms => {
  31. return new Promise(resolve => setTimeout(() => resolve(), ms))
  32. }
  33. async function checkLoop() {
  34. await getMessages().then(() => delay(2000)).then(checkLoop)
  35. }
  36. checkLoop()
  37. // function jsonPost(url, data) {
  38. // return new Promise((resolve, reject) => {
  39. // var x = new XMLHttpRequest();
  40. // x.onerror = () => reject(new Error('jsonPost failed'))
  41. // //x.setRequestHeader('Content-Type', 'application/json');
  42. // x.open("POST", url, true);
  43. // x.send(JSON.stringify(data))
  44. // x.onreadystatechange = () => {
  45. // if (x.readyState == XMLHttpRequest.DONE && x.status == 200) {
  46. // resolve(JSON.parse(x.responseText))
  47. // } else if (x.status != 200) {
  48. // reject(new Error('status is not 200'))
  49. // }
  50. // }
  51. // })
  52. // }
  53. //Прогуглить и разобраться с fetch и заменить внутренности jsonPost на код, использующий fetch вместо XMLHttpRequest
  54. async function jsonPost(url, data) {
  55. try {
  56. const response = await fetch(url, {
  57. method: 'POST',
  58. body: JSON.stringify(data)
  59. })
  60. if (response.ok) {
  61. const postJson = await response.json()
  62. return postJson
  63. }
  64. } catch (error) {
  65. throw new Error('Error: ', error)
  66. }
  67. }