emile 11 months ago
parent 671fbe34d3
commit e9245d7849

Binary file not shown.

@ -9,12 +9,11 @@ import requests
class OsitcomVisitor(WebsocketConsumer): class OsitcomVisitor(WebsocketConsumer):
def connect(self): def connect(self):
async_to_sync(self.channel_layer.group_add)( async_to_sync(self.channel_layer.group_add)(
'ositcom_visitors', self.channel_name 'ositcom_visitors', self.channel_name
) )
self.accept() self.accept()
self.visitor = None print('i am here')
def disconnect(self, close_code): def disconnect(self, close_code):
if self.visitor: if self.visitor:
@ -26,6 +25,7 @@ class OsitcomVisitor(WebsocketConsumer):
def receive(self, text_data): def receive(self, text_data):
text_data_json = json.loads(text_data) text_data_json = json.loads(text_data)
event_type = text_data_json.get('event_type') event_type = text_data_json.get('event_type')
print('333')
if event_type == 'new_visitor': if event_type == 'new_visitor':
event = { event = {
'type': 'new_visitor_handler', 'type': 'new_visitor_handler',
@ -41,7 +41,8 @@ class OsitcomVisitor(WebsocketConsumer):
) )
def new_visitor_handler(self, event): def new_visitor_handler(self, event):
visitor = Visitor.objects.create( print('hiiiiii')
self.visior = Visitor.objects.create(
session_id = event['session_id'], session_id = event['session_id'],
ip_address = event['client_ip'], ip_address = event['client_ip'],
referrer = event['referrer'], referrer = event['referrer'],
@ -49,7 +50,6 @@ class OsitcomVisitor(WebsocketConsumer):
url = event['url'], url = event['url'],
visit_date = datetime.now(), visit_date = datetime.now(),
) )
self.visitor = visitor
@ -57,13 +57,7 @@ class OsitcomVisitor(WebsocketConsumer):
class OsitcomChatRoom(WebsocketConsumer): class OsitcomChatRoom(WebsocketConsumer):
def connect(self): def connect(self):
cookie_header = self.scope.get('headers', {}) self.session_id = self.scope['url_route']['kwargs']['session_id']
http_cookie = dict(cookie_header).get(b'cookie', b'').decode('utf-8')
for cookie in http_cookie.split('; '):
key, value = cookie.split('=')
if key == 'sessionid':
self.session_id = value
break
async_to_sync(self.channel_layer.group_add)( async_to_sync(self.channel_layer.group_add)(
self.session_id, self.channel_name self.session_id, self.channel_name
) )

@ -3,6 +3,6 @@ from .consumers import *
websocket_urlpatterns = [ websocket_urlpatterns = [
path("ws/osichat/visitors/", OsitcomVisitor.as_asgi()), path("ws/osichat/visitors/", OsitcomVisitor.as_asgi()),
path("ws/osichat/", OsitcomChatRoom.as_asgi()), path("ws/osichat/<str:session_id>/", OsitcomChatRoom.as_asgi()),
] ]

@ -1,9 +1,25 @@
const chat_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws"; const chat_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
const domain = "192.168.1.106:8000"; const domain = "192.168.1.106:8000";
const osichatSocketUrl = `${chat_ws_scheme}://${domain}/ws/osichat/`; console.log('hi')
const osichatSocket = new WebSocket(osichatSocketUrl); // Function to fetch session ID
async function fetchSessionID() {
try {
const response = await fetch('http://192.168.1.106:3000/get-client-session/');
const data = await response.json();
return data.session_id;
} catch (error) {
console.error('Error fetching session ID:', error);
return 'Unknown';
}
}
// Function to initialize WebSocket connection
async function initializeChatWebSocket() {
const session_id = await fetchSessionID();
const osichatSocketUrl = `${chat_ws_scheme}://${domain}/ws/osichat/${session_id}/`;
const osichatSocket = new WebSocket(osichatSocketUrl);
osichatSocket.onopen = () => { osichatSocket.onopen = () => {
console.log('WebSocket connection to osichat established'); console.log('WebSocket connection to osichat established');
@ -22,7 +38,6 @@ osichatSocket.onmessage = function (e) {
script.src = `http://${domain}/static/js/osichat/chat-toggle.js`; script.src = `http://${domain}/static/js/osichat/chat-toggle.js`;
chatDiv.appendChild(script); chatDiv.appendChild(script);
const startChatContainer = document.getElementById('startChat'); const startChatContainer = document.getElementById('startChat');
// If this container exists then the template returned was start-conversation.html, no conversation yet. // If this container exists then the template returned was start-conversation.html, no conversation yet.
if (startChatContainer) { if (startChatContainer) {
@ -48,14 +63,12 @@ osichatSocket.onmessage = function (e) {
if (sendMessageContainer) { if (sendMessageContainer) {
sendMessageContainer.addEventListener('submit', function (event) { sendMessageContainer.addEventListener('submit', function (event) {
event.preventDefault(); event.preventDefault();
console.log('i am here')
const message = event.target.elements.message.value; const message = event.target.elements.message.value;
const eventMessage = { const eventMessage = {
'event_type': 'send_message', 'event_type': 'send_message',
'message': message, 'message': message,
}; };
osichatSocket.send(JSON.stringify(eventMessage)); osichatSocket.send(JSON.stringify(eventMessage));
@ -73,7 +86,6 @@ osichatSocket.onmessage = function (e) {
const messagesDiv = document.getElementById('messages'); const messagesDiv = document.getElementById('messages');
const html = data.html; const html = data.html;
messagesDiv.insertAdjacentHTML('beforeend', html); messagesDiv.insertAdjacentHTML('beforeend', html);
} }
}; };
@ -84,5 +96,9 @@ osichatSocket.onclose = () => {
osichatSocket.onerror = (error) => { osichatSocket.onerror = (error) => {
console.log('WebSocket error:', error); console.log('WebSocket error:', error);
}; };
}
document.addEventListener('DOMContentLoaded', () => {
initializeChatWebSocket();
});

@ -1,38 +1,41 @@
const visitors_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws"; const visitors_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
const my_domain = "osina.ositcom.com"; const my_domain = "192.168.1.106:8000";
const visitorsSocketUrl = `${visitors_ws_scheme}://${my_domain}/ws/osichat/visitors/`;
document.addEventListener('DOMContentLoaded', () => { async function fetchClientData() {
function fetchClientData() { try {
return fetch('https://osina.ositcom.com/get-client-ip/') const response = await fetch('https://osina.ositcom.com/get-client-ip/');
.then(response => response.json()) const data = await response.json();
.then(data => ({ return {
client_ip: data.ip, client_ip: data.ip,
client_country: data.country client_country: data.country
})) };
.catch(error => { } catch (error) {
console.error('Error fetching client data:', error); console.error('Error fetching client data:', error);
return { return {
client_ip: 'Unknown', client_ip: 'Unknown',
client_country: 'Unknown' client_country: 'Unknown'
}; };
}); }
} }
function fetchSessionID() { async function fetchSessionID() {
return fetch('https://ositcom.com/get-client-session/') try {
.then(response => response.json()) const response = await fetch('http://192.168.1.106:3000/get-client-session/');
.then(data => data.session_id) const data = await response.json();
.catch(error => { return data.session_id;
} catch (error) {
console.error('Error fetching session ID:', error); console.error('Error fetching session ID:', error);
return 'Unknown'; return 'Unknown';
}); }
} }
function initializeWebSocket() { async function initializeVisitorsWebSocket() {
const referrer = document.referrer; console.log('Initializing WebSocket...');
Promise.all([fetchClientData(), fetchSessionID()]).then(([clientData, session_id]) => { const referrer = document.referrer;
const clientData = await fetchClientData();
const session_id = await fetchSessionID();
const visitorsSocketUrl = `${visitors_ws_scheme}://${my_domain}/ws/osichat/visitors/`;
const visitorsSocket = new WebSocket(visitorsSocketUrl); const visitorsSocket = new WebSocket(visitorsSocketUrl);
visitorsSocket.onopen = () => { visitorsSocket.onopen = () => {
@ -56,8 +59,8 @@ document.addEventListener('DOMContentLoaded', () => {
visitorsSocket.onerror = (error) => { visitorsSocket.onerror = (error) => {
console.error('WebSocket error:', error); console.error('WebSocket error:', error);
}; };
});
} }
initializeWebSocket(); document.addEventListener('DOMContentLoaded', async () => {
initializeVisitorsWebSocket();
}); });
Loading…
Cancel
Save