على موقعي الإلكتروني أستخدم Django، يعمل WebSocket بشكل جيد على localhost ولكن عندما أقوم برفعه إلى الـ VPS (الخادم الخاص الافتراضي) تظهر لي رسالة الخطأ التالية: فشل الاتصال بـ WebSocket إلى wss://domain_name/ws/admin/pending/products/.
هذا هو ملف asgi.py الخاص بي:
import os
import django
from channels.auth importAuthMiddlewareStackfrom channels.routing importProtocolTypeRouter,URLRouterfrom django.core.asgi import get_asgi_application
import api.routing
os.environ.setdefault("DJANGO_SETTINGS_MODULE","Naviguih_backend.settings")
django.setup()
application =ProtocolTypeRouter({"http": get_asgi_application(),"websocket":AuthMiddlewareStack(URLRouter(api.routing.websocket_urlpatterns)),})
وإليك ملف routing.py الخاص بي:
from django.urls import path
from.consumers importAdminNotificationConsumer,NotificationConsumer
websocket_urlpatterns =[
path("ws/notifications/",NotificationConsumer.as_asgi()),
path("ws/admin/pending/products/",AdminNotificationConsumer.as_asgi()),]
قرأت بعض الحلول التي تقول أنه يجب تكوين Nginx لإعادة توجيه المنفذ، وهذه هي تكويناتي:
server {
server_name domain_name;
client_max_body_size 25M;
location /{
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;}
location /ws/{
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection"Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;}
listen 443 ssl;# managed by Certbot
ssl_certificate /etc/letsencrypt/live/domain_name/fullchain.pem;# managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain_name/privkey.pem;# managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf;# managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;# managed by Certbot}
server {if($host = domain_name){return301 https://$host$request_uri;}# managed by Certbot
listen 80;
server_name domain_name;return404;# managed by Certbot}
السؤال
Belkacem Rezzouk
السلام عليكم جميعا،
هل من مساعدة من فضلكم.
على موقعي الإلكتروني أستخدم Django، يعمل WebSocket بشكل جيد على localhost ولكن عندما أقوم برفعه إلى الـ VPS (الخادم الخاص الافتراضي) تظهر لي رسالة الخطأ التالية: فشل الاتصال بـ WebSocket إلى wss://domain_name/ws/admin/pending/products/.
هذا هو ملف asgi.py الخاص بي:
وإليك ملف routing.py الخاص بي:
قرأت بعض الحلول التي تقول أنه يجب تكوين Nginx لإعادة توجيه المنفذ، وهذه هي تكويناتي:
ثم جربت ذلك، لكنني ما زلت أواجه نفس المشكلة.
شكرا مسبقا.
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.