index.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. var nextMessageId = 0;
  2. var previousParagraphToInsertNext;
  3. function jsonPost(url, data) {
  4. return new Promise((resolve, reject) => {
  5. var x = new XMLHttpRequest();
  6. x.onerror = () => reject(new Error('jsonPost failed'));
  7. x.open("POST", url, true);
  8. x.send(JSON.stringify(data));
  9. x.onreadystatechange = () => {
  10. if (x.readyState == XMLHttpRequest.DONE && x.status == 200){
  11. resolve(JSON.parse(x.responseText))
  12. }
  13. else if (x.status != 200){
  14. reject(new Error('status is not 200'))
  15. }
  16. }
  17. })
  18. }
  19. function getFullTime(timestamp) {
  20. var date = new Date(timestamp*1000);
  21. var hours = date.getHours();
  22. var minutes = "0" + date.getMinutes();
  23. var seconds = "0" + date.getSeconds();
  24. var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
  25. return formattedTime;
  26. }
  27. async function getMessages(){
  28. var data = {func: 'getMessages', messageId: nextMessageId};
  29. var messages = await jsonPost("server.php", data);
  30. for (let msgIndex in messages.data){
  31. let par = chat.insertBefore(document.createElement('p'), previousParagraphToInsertNext);
  32. par.innerHTML = `
  33. (${getFullTime(messages.data[msgIndex].timestamp)})
  34. <strong>${messages.data[msgIndex].nick}:</strong>
  35. ${messages.data[msgIndex].message}
  36. `;
  37. previousParagraphToInsertNext = par;
  38. }
  39. nextMessageId = messages.nextMessageId;
  40. }
  41. send.onclick = async event => {
  42. var a = await jsonPost("server.php", {func: 'addMessage', nick: nick.value, message: message.value});
  43. getMessages();
  44. }
  45. setInterval(() => getMessages(), 500);