Real-time one-on-one chat system for Django projects, powered by WebSocket and JWT authentication.
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
Django Chelseru Chat
یک بسته ساده برای افزودن قابلیت چت بلادرنگ (real-time) به جنگو با استفاده از Django Channels و WebSocket. این ابزار امکان گفتوگوی خصوصی بین دو کاربر را فراهم میکند و با استفاده از JWT احراز هویت میشود.
نصب
pip install django-chelseru-chat
پیکربندی
اطمینان حاصل کنید که پروژهی جنگوی شما با ASGI سازگار است و احراز هویت JWT برای ارتباط WebSocket تنظیم شده باشد.
1. افزودن به INSTALLED_APPS:
INSTALLED_APPS = [
...
'channels',
'chat',
]
2. تنظیم ASGI_APPLICATION در settings.py:
ASGI_APPLICATION = '<your_project_name>.asgi.application'
به جای
<your_project_name>نام پوشهی پروژهی جنگوی خود را وارد کنید (مثلاًmyproject).
3. استفاده از asgi.py سفارشی با JWTAuthMiddleware:
# <your_project_name>/asgi.py
import os
import django
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
# تنظیم محیط و راهاندازی جنگو
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<your_project_name>.settings')
django.setup()
# وارد کردن روتینگ و میانافزار پس از setup
import chat.routing
from chat.middleware import JWTAuthMiddleware
application = ProtocolTypeRouter({
"http": get_asgi_application(),
"websocket": JWTAuthMiddleware(
URLRouter(
chat.routing.websocket_urlpatterns
)
),
})
مجدداً
<your_project_name>را با نام پروژهی خود جایگزین کنید.
مدلها
مدل ChatRoom
class ChatRoom(models.Model):
user_1 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user1_chats')
user_2 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user2_chats')
created_at = models.DateTimeField(auto_now_add=True)
مدل Message
class Message(models.Model):
chat_room = models.ForeignKey(ChatRoom, on_delete=models.CASCADE, related_name='messages')
sender = models.ForeignKey(User, on_delete=models.CASCADE)
text = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
اتصال WebSocket
برای ارسال و دریافت پیامها، به آدرس زیر از طریق WebSocket متصل شوید:
ws://<your-domain>/ws/chat/<chat_room_id>/?token=<your_jwt_access_token>
نمونه:
ws://qesa.chelseru.com:8000/ws/chat/3/?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
ارسال پیام:
> {"message": "hi"}
پاسخ دریافتی:
< {"message": "hi", "sender": "user"}
ایجاد ChatRoom به صورت برنامهنویسی
from chat.models import ChatRoom
chat = ChatRoom.objects.create(user_1=user1, user_2=user2)
احراز هویت WebSocket با JWT
این بسته از یک JWTAuthMiddleware سفارشی برای احراز هویت کاربران از طریق توکن JWT استفاده میکند.
توکن باید به صورت query parameter به آدرس WebSocket اضافه شود: ?token=...
برای صدور توکنها میتوانید از بسته djangorestframework-simplejwt استفاده کنید.
امکانات
- چت خصوصی دو نفره
- ارسال و دریافت پیام به صورت لحظهای (real-time)
- احراز هویت WebSocket با JWT
- مشاهده تاریخچهی پیامها در هر اتاق چت
- ساختار سادهی مدلها
برنامههای آینده
- پشتیبانی از چت گروهی
- وضعیت خوانده شدن پیامها
- نمایش وضعیت تایپ کردن کاربر
مجوز
این پروژه تحت مجوز MIT ارائه شده است.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_chelseru_chat-1.0.1-py3-none-any.whl.
File metadata
- Download URL: django_chelseru_chat-1.0.1-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b71bf0ed052c1c8b0f3a0ca0eab92e3ea6963f175314b1d1225f78bf7b8f3e9a
|
|
| MD5 |
694f1496569eb358b7fe79e60026f0cd
|
|
| BLAKE2b-256 |
0f097243fc083c114fdce7b3253a83dc43ec2f08df3713f7be714619ad85a8a5
|