0

I am using Django-channels to connect to the server, but it always show the error like this:

reconnectwebsockets.js WebSocket connection to 'ws:xxx' failed: 
Error during WebSocket handshake: Unexpected response code: 200

Also, I am using docker, this may be a issue of docker container configuration? Any ideas what could be possibly wrong?

DatascienceGeeks
  • 368
  • 2
  • 12

1 Answers1

0

Question details

Hello, did you try to use channels library? It will give you same powerful as Django-channels one. Here you can find necessary documentation for it.

I recommend you use it because it is give you more flexibility then Django-channels one.

Channels library

Quick start

You can read how to work with it at Tutorial.

Errors and solutions

Unexpected response code: 200 (or other code XXX) (solved):

  • Be sure you include your application and channels via settings (mysite.settings) and use asgi application:
INSTALLED_APPS = [
    'channels',
    'chat',
    ...
]
...
ASGI_APPLICATION = "mysite.asgi.application"
  • Be sure you use channel layers (mysite.settings).
CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels.layers.InMemoryChannelLayer',
    },
}

According Documentation you should use database for production, but for local environment you may use channels.layers.InMemoryChannelLayer.

  • Be sure you run asgi server (not wsgi) because you need asynchronous behaviour. Also, for deployment you should use daphne instead of gunicorn. daphne is included in channels library by default, so you don't need to install it manually. Basic run server will look like (Terminal):
daphne -b 0.0.0.0 -p $PORT mysite.asgi:application

where $PORT is specific port (for UNIX system is 5000). (That format used for heroku application, you can change it manually).

Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR and same errors with using https connection (solved):

Difference between ws and wss?

You may think about to use your server via wss protocol: replace ws://... with wss://... or use following template in your html (chat/templates/chat/room.html):

(window.location.protocol === 'https:' ? 'wss' : 'ws') + '://'

Hope this answer is useful for channels with Django.