我正在使用Django应用程序,该应用程序使用django-websocket-redis
应用程序从服务器端发布事件。
我已成功使用nginx
和uWSGI
配置测试服务器,以便将HTTP和WS请求正确地路由到我的Django应用程序,但在我的本地开发环境中,我无法正常工作。
根据django-websocket-redis
documentation,它足以启动Django开发服务器,一切都应该可以正常工作,但似乎这远离现实。
以下是我检查的内容:
localhost:6379
上运行,并且正在响应PING
次请求django-websocket-redis
是否对开发服务器端口做出任何假设,但没有改变在我的客户端本地环境中,当我的应用程序尝试连接到本地WebSocket时,我看到404错误。我的settings.py
将WEBSOCKET_URL
设置为正确的网址(在测试服务器上它正常工作,但本地不是)。
任何人都知道我做错了什么?谢谢!
答案 0 :(得分:0)
我找到了解决方法。
我已将我的wsgi.py修改为此,现在可以使用了:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
from django.conf import settings
from ws4redis.django_runserver import WebsocketRunServer
if settings.DEBUG:
_django_app = get_wsgi_application()
_websocket_app = WebsocketRunServer()
def application(environ, start_response):
if environ.get('PATH_INFO').startswith(settings.WEBSOCKET_URL):
return _websocket_app(environ, start_response)
return _django_app(environ, start_response)
else:
application = get_wsgi_application()
更新:如前所述,我们不需要创建自定义管理命令,因此我已删除了部分答案。