Я настраиваю каналы Django, и пока что это код, который я установил.
#routing.py
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import routing as route
from django.conf.urls import url
from consumers import ChatConsumer
websocket_urlpatterns = [
url(r'^ws/chat/$', ChatConsumer),
]
application = ProtocolTypeRouter({
# (http->django views is added by default)
'websocket': AuthMiddlewareStack(
URLRouter(
websocket_urlpatterns
)
),
})
и в consumer.py
from channels.generic.websocket import WebsocketConsumer
import json
class ChatConsumer(WebsocketConsumer):
def connect(self):
self.accept()
def disconnect(self, close_code):
pass
def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
self.send(text_data=json.dumps({
'message': message
}))
и файле настроек
#Channels
ASGI_APPLICATION = 'chatsys.routing.application'
и, наконец, javascript
//Sockets
var myWebSocket = new WebSocket("ws://" + window.location.host + "/chat/");
myWebSocket.onopen = function(evt) {
alert("Connection open ...");
};
myWebSocket.onmessage = function(evt) {
alert( "Received Message: " + evt.data);
};
myWebSocket.onclose = function(evt) {
alert("Connection closed.");
};
// Call onopen directly if socket is already open
if (myWebSocket.readyState == WebSocket.OPEN) myWebSocket.onopen();
//End Sockets
Когда я загружаю страницу, я получаю предупреждение о onclose alert("Connection closed.");
, а также на консоли 404 для подключения ws к ws://35.227.80.72/chat/