Anybody?

On Monday, October 30, 2017 at 10:57:26 AM UTC-7, Adam wrote:
>
>
> Hello,
>
> I am following "getting started" in the django channel docs as well as 
> "django channels form the ground up" 
> https://artandlogic.com/2016/06/django-channels-ground-part-2/  tutorial 
> in the django,  using REDIS, NGINX and GUNICORN on digital ocean. 
>
> Based on console errors in the browser, I used this code  modified from 
> modified from the docs to test the channel in my browser (JavaScript):
>
>     socket = new WebSocket("wss://" + window.location.host + ":8001/chat");
>
> Then the rest is copied directly:
>
>     socket.onopen = function() {
>         socket.send("hello world");
>     }
>
>     // Call onopen directly if socket is already open
>     if (socket.readyState == WebSocket.OPEN) socket.onopen();
>
>  As the title states, the JavaScript test works on the run server -   
> python manage.py runserver 0.0.0.0:8000 but not o the production server.
>
> Here is the terminal response to the run server command:
>
> Performing system checks...
>
> System check identified no issues (0 silenced).
> October 30, 2017 - 10:40:10
> Django version 1.11, using settings 'dojos.settings'
> Starting Channels development server at http://0.0.0.0:8000/
> Channel layer default (channels_panel.apps.DebugChannelLayer)
> Quit the server with CONTROL-C.
> 2017-10-30 10:40:10,203 - INFO - worker - Listening on channels 
> http.request, websocket.connect, websocket.disconnect, websocket.receive
> 2017-10-30 10:40:10,205 - INFO - worker - Listening on channels 
> http.request, websocket.connect, websocket.disconnect, websocket.receive
> 2017-10-30 10:40:10,206 - INFO - worker - Listening on channels 
> http.request, websocket.connect, websocket.disconnect, websocket.receive
> 2017-10-30 10:40:10,208 - INFO - server - HTTP/2 support not enabled 
> (install the http2 and tls Twisted extras)
> 2017-10-30 10:40:10,208 - INFO - server - Using busy-loop synchronous mode 
> on channel layer
> 2017-10-30 10:40:10,209 - INFO - server - Listening on endpoint 
> tcp:port=8000:interface=0.0.0.0
> 2017-10-30 10:40:10,210 - INFO - worker - Listening on channels 
> http.request, websocket.connect, websocket.disconnect, websocket.receive
>
> And then to the JavaScript test:
>
> [2017/10/30 10:41:07] HTTP GET /favicon.ico 200 [0.24, 75.82.191.111:35111
> ]
> [2017/10/30 10:41:16] WebSocket HANDSHAKING /chat/ [75.82.191.111:47589]
> [2017/10/30 10:41:16] WebSocket CONNECT /chat/ [75.82.191.111:47589]
>
>
> On the production server, here is the console error:
>
> VM381:1 Uncaught DOMException: Failed to execute 'send' on 'WebSocket': 
> Still in CONNECTING state.
>     at <anonymous>:1:8
> (anonymous) @ VM381:1
> VM379:1 WebSocket connection to 'wss://joinourstory.com:8001/chat' 
> failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT 
>
> These things seem to be relevant:
>
> SETTINGS.PY copied exactly tutorial:
>
> REDIS_HOST = os.environ.get('REDIS_HOST', 'localhost')
>
> CHANNEL_LAYERS = {
>     "default": {
>         "BACKEND": "asgi_redis.RedisChannelLayer",
>         "CONFIG": {
>             "hosts": [("localhost", 6379)],
>         },
>         "ROUTING": "dojos.routing.channel_routing",
>     },
> }
>
>
>  ROUTING.PY and CONSUMERS.PY copied exactly from the docs.
>
> Here is the supervisor configuration:
>
>
> [program:dojos]
> command=/home/adam/dojos/bin/gunicorn_start
> user=adam
> autostart=true
> autorestart=true
> redirect_stderr=true
> stdout_logfile=/home/adam/logs/gunicorn-error.log
>
> [program:server_workers]
> command=/home/adam/dojos/venv/bin/python /home/adam/dojos/manage.py 
> runworker
> directory=/home/adam/dojos
> user=adam
> autostart=true
> autorestart=true
> redirect_stderr=true
> stopasgroup=true
>
> [program:server_interface]
> command=/home/adam/dojos/venv/bin/daphne -b 127.0.0.1 -p 8001 
> dojos.asgi:channel_layer
> directory=/home/adam/dojos
> autostart=true
> autorestart=true
> stopasgroup=true
> user=adam
>
> This seems to be working as this is the response to sudo supervisorctl 
> status:
>
> dojos                            RUNNING   pid 27834, uptime 0:22:29
> server_interface                 RUNNING   pid 27835, uptime 0:22:29
> server_workers                   RUNNING   pid 27836, uptime 0:22:29
>
> Here is the nginx config file (NOTE I HAVE TO USE SSL)
>
> # Enable upgrading of connection (and websocket proxying) depending on the
> # presence of the upgrade field in the client request header
> map $http_upgrade $connection_upgrade {
>     default upgrade;
>     '' close;
> }
>
> # Create an upstream alias to where we've set daphne to bind to
> upstream dojos {
>     server 127.0.0.1:8001;
> }
>
> server {
>     listen 80;
>
>     server_name joinourstory.com www.joinourstory.com;
>
>     return 301 https://$server_name$request_uri;
> }
>
> server {
>
>     listen 443 ssl;
>
>     server_name joinourstory.com www.joinourstory.com;
>
>     ssl on;
>
>     ssl_certificate /etc/nginx/ssl/chainedcert.crt;
>     ssl_certificate_key  /etc/nginx/ssl/josserver.key;
>
>     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
>     ssl_prefer_server_ciphers on;
>     ssl_ciphers REDACTED
>
>     location = /favicon.ico { access_log off; log_not_found off; }
>
>     location /static/ {
>              root /home/adam/dojos;
>     }
>
>     location /media/ {
>               root /home/adam/dojos;
>     }
>
>     location / {
>     # Pass request to the upstream alias
>     proxy_pass http://unix:/home/adam/gunicorn.sock;
>
>     # Require http version 1.1 to allow for upgrade requests
>     proxy_http_version 1.1;
>
>     # We want proxy_buffering off for proxying to websockets.
>     proxy_buffering off;
>
>     # http://en.wikipedia.org/wiki/X-Forwarded-For
>     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>
>     # enable this if you use HTTPS:
>     proxy_set_header X-Forwarded-Proto https;
>
>     # pass the Host: header from the client for the sake of redirects
>     proxy_set_header Host $http_host;
>
>     # We've set the Host header, so we don't need Nginx to muddle
>     proxy_redirect off;
>
>    # Depending on the request value, set the Upgrade and connection
>    proxy_set_header Upgrade $http_upgrade;
>
>    proxy_set_header Connection $connection_upgrade;
> }
> }
>
>
>
>
> The  nginx-error.log is empty and everything else on the site seems to be 
> working fine. 
>
> Please help!
>
> Thanks Adam
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/0b4e345d-338a-481f-b5eb-c35b7ce5bb4c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to