Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_chelseru_chat-1.0.1-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file django_chelseru_chat-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_chelseru_chat-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b71bf0ed052c1c8b0f3a0ca0eab92e3ea6963f175314b1d1225f78bf7b8f3e9a
MD5 694f1496569eb358b7fe79e60026f0cd
BLAKE2b-256 0f097243fc083c114fdce7b3253a83dc43ec2f08df3713f7be714619ad85a8a5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page