|
|
|
@ -5,19 +5,28 @@ from django.template.loader import render_to_string
|
|
|
|
|
from asgiref.sync import async_to_sync
|
|
|
|
|
from django.shortcuts import get_object_or_404
|
|
|
|
|
import requests
|
|
|
|
|
from django.contrib.sessions.models import Session
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class OsitcomVisitor(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('=')
|
|
|
|
|
cookie_header = dict(self.scope.get('headers', {})).get(b'cookie', b'').decode('utf-8')
|
|
|
|
|
|
|
|
|
|
self.session_id = None
|
|
|
|
|
if cookie_header:
|
|
|
|
|
for cookie in cookie_header.split('; '):
|
|
|
|
|
key, value = cookie.split('=', 1)
|
|
|
|
|
if key == 'sessionid':
|
|
|
|
|
self.session_id = value
|
|
|
|
|
break
|
|
|
|
|
else:
|
|
|
|
|
self.session_id = 11
|
|
|
|
|
|
|
|
|
|
if not self.session_id:
|
|
|
|
|
self.session_id = self.scope.get('session', {}).get('_session_key')
|
|
|
|
|
|
|
|
|
|
if not self.session_id:
|
|
|
|
|
# Handle missing session_id scenario, maybe reject the connection
|
|
|
|
|
self.close()
|
|
|
|
|
return
|
|
|
|
|
async_to_sync(self.channel_layer.group_add)(
|
|
|
|
|
'ositcom_visitors', self.channel_name
|
|
|
|
|
)
|
|
|
|
|