main.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. let messageId = 0;
  2. send.onclick = () => {
  3. jsonPost('http://students.a-level.com.ua:10012', {
  4. func: 'addMessage',
  5. nick: nick.value,
  6. message: message.value,
  7. });
  8. };
  9. function jsonPost(url, data) {
  10. return new Promise((resolve, reject) => {
  11. var x = new XMLHttpRequest();
  12. x.onerror = () => reject(new Error('jsonPost failed'));
  13. //x.setRequestHeader('Content-Type', 'application/json');
  14. x.open('POST', url, true);
  15. x.send(JSON.stringify(data));
  16. x.onreadystatechange = () => {
  17. if (x.readyState === XMLHttpRequest.DONE && x.status === 200) {
  18. resolve(JSON.parse(x.responseText));
  19. } else if (x.status !== 200) {
  20. reject(new Error('status is not 200'));
  21. }
  22. };
  23. });
  24. }
  25. setInterval(() => {
  26. jsonPost('http://students.a-level.com.ua:10012', {
  27. func: 'getMessages',
  28. messageId: messageId,
  29. }).then((result) => {
  30. for (let key in result.data) {
  31. let div = document.createElement('div');
  32. div.textContent = `${result.data[key].nick}:${result.data[key].message}`;
  33. let time = document.createElement('span');
  34. let timeOfSending = new Date(result.data[key].timestamp);
  35. let minutes = '0' + timeOfSending.getMinutes();
  36. let seconds = '0' + timeOfSending.getSeconds();
  37. time.textContent = `Date: ${timeOfSending.getDate()}/${timeOfSending.getMonth() + 1}/${timeOfSending.getFullYear()}, time: ${timeOfSending.getHours()}:${minutes.substr(-2)}:${seconds.substr(-2)}`;
  38. chat.prepend(div);
  39. chat.prepend(time);
  40. }
  41. messageId = result.nextMessageId;
  42. });
  43. }, 3000);
  44. {
  45. let messageId = 0;
  46. send.onclick = async function sendAndCheck() {
  47. await Promise.all([sendMessage('http://students.a-level.com.ua:10012', {
  48. func: 'addMessage',
  49. nick: nick.value,
  50. message: message.value,
  51. }), getMessages()]);
  52. };
  53. async function sendMessage(url, data) {
  54. const settings = {
  55. method: 'Post',
  56. mode: 'cors',
  57. cahe: 'no-cache',
  58. credentials: 'same-origin',
  59. headers: {
  60. 'Content-Type': 'application/x-www-form-urlencoded',
  61. },
  62. redirect: 'follow',
  63. referrerPolicy: 'no-referrer',
  64. body: JSON.stringify(data),
  65. };
  66. try {
  67. let response = await fetch(url, settings);
  68. return response.json();
  69. } catch (error) {
  70. return console.log(error);
  71. }
  72. }
  73. }
  74. async function getMessages() {
  75. await sendMessage('http://students.a-level.com.ua:10012', {
  76. func: 'getMessages',
  77. messageId: messageId,
  78. }).then((resAll) => {
  79. for (let key in resAll.data) {
  80. let span = dociment.createElement('div');
  81. span.className = 'time';
  82. span.textContent = `${resAll.data[key].nick}: ${resAll.data[key].messge}`;
  83. let time = document.createElement('span');
  84. time.className = 'time';
  85. let timeOfSending = new Date(resAll.data[key].timestamp);
  86. let minutes = '0' + timeOfSending.getMinutes();
  87. time.textContent = `${timeOfSending.getDate()}.${timeOfSending.getMonth() + 1}.${timeOfSending.getFullYear()} ${timeOfSending.getHours()}:${minutes.substr(-2)}`;
  88. chat.prepend(time);
  89. chat.prepend(span);
  90. chat.prepend(document.createElement('hr'));
  91. }
  92. messageId = resAll.nextMessageId;
  93. console.log(messageId);
  94. });
  95. }
  96. (function checkLoop() {
  97. setInterval(async () => {
  98. await getMessages();
  99. }, 3000);
  100. })();