emile 10 months ago
parent 671fbe34d3
commit e9245d7849

Binary file not shown.

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

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

@ -1,15 +1,31 @@
const chat_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
const domain = "192.168.1.106:8000";
const osichatSocketUrl = `${chat_ws_scheme}://${domain}/ws/osichat/`;
const osichatSocket = new WebSocket(osichatSocketUrl);
console.log('hi')
// 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');
};
};
osichatSocket.onmessage = function (e) {
osichatSocket.onmessage = function (e) {
const data = JSON.parse(e.data);
if (data.event_type === 'load_chat') {
const chatDiv = document.getElementById('osichat');
@ -22,7 +38,6 @@ osichatSocket.onmessage = function (e) {
script.src = `http://${domain}/static/js/osichat/chat-toggle.js`;
chatDiv.appendChild(script);
const startChatContainer = document.getElementById('startChat');
// If this container exists then the template returned was start-conversation.html, no conversation yet.
if (startChatContainer) {
@ -48,14 +63,12 @@ osichatSocket.onmessage = function (e) {
if (sendMessageContainer) {
sendMessageContainer.addEventListener('submit', function (event) {
event.preventDefault();
console.log('i am here')
const message = event.target.elements.message.value;
const eventMessage = {
'event_type': 'send_message',
'message': message,
};
osichatSocket.send(JSON.stringify(eventMessage));
@ -73,16 +86,19 @@ osichatSocket.onmessage = function (e) {
const messagesDiv = document.getElementById('messages');
const html = data.html;
messagesDiv.insertAdjacentHTML('beforeend', html);
}
};
};
osichatSocket.onclose = () => {
osichatSocket.onclose = () => {
console.log('WebSocket connection to osichat closed');
};
};
osichatSocket.onerror = (error) => {
osichatSocket.onerror = (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 my_domain = "osina.ositcom.com";
const visitorsSocketUrl = `${visitors_ws_scheme}://${my_domain}/ws/osichat/visitors/`;
document.addEventListener('DOMContentLoaded', () => {
function fetchClientData() {
return fetch('https://osina.ositcom.com/get-client-ip/')
.then(response => response.json())
.then(data => ({
const my_domain = "192.168.1.106:8000";
async function fetchClientData() {
try {
const response = await fetch('https://osina.ositcom.com/get-client-ip/');
const data = await response.json();
return {
client_ip: data.ip,
client_country: data.country
}))
.catch(error => {
};
} catch (error) {
console.error('Error fetching client data:', error);
return {
client_ip: 'Unknown',
client_country: 'Unknown'
};
});
}
}
function fetchSessionID() {
return fetch('https://ositcom.com/get-client-session/')
.then(response => response.json())
.then(data => data.session_id)
.catch(error => {
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 initializeWebSocket() {
const referrer = document.referrer;
async function initializeVisitorsWebSocket() {
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);
visitorsSocket.onopen = () => {
@ -56,8 +59,8 @@ document.addEventListener('DOMContentLoaded', () => {
visitorsSocket.onerror = (error) => {
console.error('WebSocket error:', error);
};
});
}
initializeWebSocket();
});
document.addEventListener('DOMContentLoaded', async () => {
initializeVisitorsWebSocket();
});
Loading…
Cancel
Save