You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.2 KiB
JavaScript

const visitors_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
const my_domain = "osina.ositcom.com";
async function fetchClientData() {
let clientData = { client_ip: 'Unknown', client_country: 'Unknown' };
while (clientData.client_ip === 'Unknown') {
try {
const response = await fetch('https://osina.ositcom.com/get-client-ip/');
const data = await response.json();
if (data.ip) {
clientData = {
client_ip: data.ip,
client_country: data.country || 'Unknown'
};
}
} catch (error) {
console.error('Error fetching client data:', error);
}
}
return clientData;
}
async function fetchVisitorsSession() {
let session_id = 'Unknown';
while (session_id === 'Unknown') {
try {
const response = await fetch('https://ositcom.com/get-client-session/');
const data = await response.json();
if (data.session_id) {
session_id = data.session_id;
}
} catch (error) {
console.error('Error fetching session ID:', error);
}
}
return session_id;
}
async function initializeVisitorsWebSocket() {
const referrer = document.referrer;
const clientData = await fetchClientData();
const session_id = await fetchVisitorsSession();
const visitorsSocketUrl = `${visitors_ws_scheme}://${my_domain}/ws/osichat/visitors/`;
const visitorsSocket = new WebSocket(visitorsSocketUrl);
visitorsSocket.onopen = () => {
console.log('WebSocket connection to visitors established');
const event_message = {
'event_type': 'visitor_ping',
'referrer': referrer,
'url': window.location.href,
'client_ip': clientData.client_ip,
'client_country': clientData.client_country,
'session_id': session_id
};
visitorsSocket.send(JSON.stringify(event_message));
};
visitorsSocket.onclose = () => {
console.log('WebSocket connection to visitors closed');
};
visitorsSocket.onerror = (error) => {
console.error('WebSocket error:', error);
};
}
initializeVisitorsWebSocket();