Skip to content

Instantly share code, notes, and snippets.

@omariut
Created January 26, 2024 01:02
Show Gist options
  • Select an option

  • Save omariut/c48c62a28793823ee3d36df59e31bbed to your computer and use it in GitHub Desktop.

Select an option

Save omariut/c48c62a28793823ee3d36df59e31bbed to your computer and use it in GitHub Desktop.
from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer
import json
class ChatConsumer(WebsocketConsumer):
active_rooms = {}
def connect(self):
self.room_name = self.scope["url_route"]["kwargs"]["room_name"]
self.room_group_name = f"chat_{self.room_name}"
# Join room group
async_to_sync(self.channel_layer.group_add)(
self.room_group_name, self.channel_name
)
# Update and broadcast active room members count
self.active_rooms[self.room_group_name] = self.active_rooms.get(self.room_group_name, 0) + 1
self.accept()
def disconnect(self, close_code):
# Leave room group
async_to_sync(self.channel_layer.group_discard)(
self.room_group_name, self.channel_name
)
# Update and broadcast active room members count
self.active_rooms[self.room_group_name] -= 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment