Всем привет.
В какой-то дикий гемморой превратился деплой чата на вебсокетах. На вас последняя надежда, друзья.
Проект на Django (Python). За исходник брал вот этот репозиторий
https://github.com/Bearle/django-private-chat
Запускаю websocket сервер:
class Command(BaseCommand):
help = 'Starts message center chat engine'
def handle(self, *args, **options):
asyncio.async(
websockets.serve(
handlers.main_handler,
'0.0.0.0',
'5002'
)
)
logger.info('Chat server started')
asyncio.async(handlers.new_messages_handler(channels.new_messages))
asyncio.async(handlers.users_changed_handler(channels.users_changed))
asyncio.async(handlers.gone_online(channels.online))
asyncio.async(handlers.check_online(channels.check_online))
asyncio.async(handlers.gone_offline(channels.offline))
asyncio.async(handlers.is_typing_handler(channels.is_typing))
asyncio.async(handlers.read_message_handler(channels.read_unread))
loop = asyncio.get_event_loop()
loop.run_forever()
к основным nginx конфигам добавил :
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 5002;
location / {
proxy_pass http://ip хоста:5002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
Основной конфиг nginx
server {
server_name домен;
listen 80;
listen 443 default_server ssl;
ssl_certificate /home/dev/c.pem;
ssl_certificate_key /home/dev/k.key;
location /static/ {
root /home/dev/gamemode_prj/gamemode/;
}
location /media/ {
root /home/dev/gamemode_prj/gamemode/;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/dev/gamemode_prj/gamemode/gamemode/gamemode.sock;
}
На фронте указываю свой домен
websocket = new WebSocket(wss://domen + '{{ request.session.session_key }}/' + opponent_username);
В ответ приходит 404
WebSocket connection to 'wss://domen/yl8xetcvg6sbbqg2cdu15qkjhshvf0cr/Vasya' failed: Error during WebSocket handshake: Unexpected response code: 404
error.log nginx молчит, access:
162.158.91.162 - - [29/May/2018:05:50:53 -0400] "GET /yl8xetcvg6sbbqg2cdu15qkjhshvf0cr/Vasya HTTP/1.1" 404 1508 "-" "Mozilla/5.0 (Windows NT 10.0; W$
162.158.91.162 - - [29/May/2018:05:50:57 -0400] "GET /static/js/scrollMonitor.js.map HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) $
scrollMonitor.js выполняет декоративные функции, не знаю почему 304 вылазит.
Максимум, что мне удалось сделать, это добиться работоспособности, указав на фронте ws://ip хоста:port
Надо обязательно wss...