|
@@ -0,0 +1,123 @@
|
|
|
+let messageId = 0;
|
|
|
+
|
|
|
+send.onclick = () => {
|
|
|
+ jsonPost('http://students.a-level.com.ua:10012', {
|
|
|
+ func: 'addMessage',
|
|
|
+ nick: nick.value,
|
|
|
+ message: message.value,
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+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'));
|
|
|
+ }
|
|
|
+ };
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+setInterval(() => {
|
|
|
+ jsonPost('http://students.a-level.com.ua:10012', {
|
|
|
+ func: 'getMessages',
|
|
|
+ messageId: messageId,
|
|
|
+ }).then((result) => {
|
|
|
+ for (let key in result.data) {
|
|
|
+
|
|
|
+ let div = document.createElement('div');
|
|
|
+
|
|
|
+ div.textContent = `${result.data[key].nick}:${result.data[key].message}`;
|
|
|
+ let time = document.createElement('span');
|
|
|
+
|
|
|
+ let timeOfSending = new Date(result.data[key].timestamp);
|
|
|
+ let minutes = '0' + timeOfSending.getMinutes();
|
|
|
+ let seconds = '0' + timeOfSending.getSeconds();
|
|
|
+ time.textContent = `Date: ${timeOfSending.getDate()}/${timeOfSending.getMonth() + 1}/${timeOfSending.getFullYear()}, time: ${timeOfSending.getHours()}:${minutes.substr(-2)}:${seconds.substr(-2)}`;
|
|
|
+ chat.prepend(div);
|
|
|
+ chat.prepend(time);
|
|
|
+ }
|
|
|
+
|
|
|
+ messageId = result.nextMessageId;
|
|
|
+ });
|
|
|
+}, 3000);
|
|
|
+
|
|
|
+{
|
|
|
+
|
|
|
+ let messageId = 0;
|
|
|
+
|
|
|
+ send.onclick = async function sendAndCheck() {
|
|
|
+
|
|
|
+ await Promise.all([sendMessage('http://students.a-level.com.ua:10012', {
|
|
|
+ func: 'addMessage',
|
|
|
+ nick: nick.value,
|
|
|
+ message: message.value,
|
|
|
+ }), getMessages()]);
|
|
|
+ };
|
|
|
+
|
|
|
+ async function sendMessage(url, data) {
|
|
|
+
|
|
|
+ const settings = {
|
|
|
+ method: 'Post',
|
|
|
+ mode: 'cors',
|
|
|
+ cahe: 'no-cache',
|
|
|
+ credentials: 'same-origin',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/x-www-form-urlencoded',
|
|
|
+ },
|
|
|
+ redirect: 'follow',
|
|
|
+ referrerPolicy: 'no-referrer',
|
|
|
+ body: JSON.stringify(data),
|
|
|
+ };
|
|
|
+
|
|
|
+ try {
|
|
|
+ let response = await fetch(url, settings);
|
|
|
+ return response.json();
|
|
|
+ } catch (error) {
|
|
|
+ return console.log(error);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function getMessages() {
|
|
|
+ await sendMessage('http://students.a-level.com.ua:10012', {
|
|
|
+ func: 'getMessages',
|
|
|
+ messageId: messageId,
|
|
|
+ }).then((resAll) => {
|
|
|
+ for (let key in resAll.data) {
|
|
|
+ let span = dociment.createElement('div');
|
|
|
+ span.className = 'time';
|
|
|
+
|
|
|
+ span.textContent = `${resAll.data[key].nick}: ${resAll.data[key].messge}`;
|
|
|
+ let time = document.createElement('span');
|
|
|
+ time.className = 'time';
|
|
|
+
|
|
|
+ let timeOfSending = new Date(resAll.data[key].timestamp);
|
|
|
+ let minutes = '0' + timeOfSending.getMinutes();
|
|
|
+ time.textContent = `${timeOfSending.getDate()}.${timeOfSending.getMonth() + 1}.${timeOfSending.getFullYear()} ${timeOfSending.getHours()}:${minutes.substr(-2)}`;
|
|
|
+ chat.prepend(time);
|
|
|
+ chat.prepend(span);
|
|
|
+ chat.prepend(document.createElement('hr'));
|
|
|
+ }
|
|
|
+
|
|
|
+ messageId = resAll.nextMessageId;
|
|
|
+ console.log(messageId);
|
|
|
+
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+(function checkLoop() {
|
|
|
+ setInterval(async () => {
|
|
|
+ await getMessages();
|
|
|
+ }, 3000);
|
|
|
+})();
|