你好真棒人!
我创建了一个聊天室django-channels
。每次我尝试在生产中通过网络套接字连接到我的聊天室时,它都会失败。在本地它可以正常工作。
我在digitalocean上主持
点冻结:
channels==2.1.2
channels-redis==2.3.0
daphne==2.2.1
'''
我已经安装redis-server
了
sudo apt-get install redis-server
这是我的设置。
INSTALLED_APPS = [
# '''
'channels',
# '''
]
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [os.environ.get('REDIS_URL', 'redis://localhost:6379')],
},
},
}
ASGI_APPLICATION = "project_name.routing.application"
这是我的asgi.py
旁边wsgi.py
import os
import django
from channels.routing import get_default_application
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings")
django.setup()
application = get_default_application()
这是我的project_folder.rounting.py
application = ProtocolTypeRouter({
'websocket':AllowedHostsOriginValidator(
AuthMiddlewareStack(
URLRouter([
# my urls
])
)
)
})
我一直在 Firefox 中得到这个,在其他浏览器中也有类似的东西:
Firefox 无法与位于 wss://www.domain_name.com/url-to/1/XBvZjr2pqdf6fhy/ 的服务器建立连接
但是它在本地工作。
更新
这是我的js
var loc = window.location;
var wsStart = loc.protocol == "https:" ? "wss://" : "ws://"
var endpoint = wsStart + loc.host + loc.pathname
var socket = new ReconnectingWebSocket(endpoint);
socket.onmessage = function(e){
// code
}