Je suis les instructions du site de documentation Mais je suis bloqué dans l'exemple de l'écho, le websocket est créé correctement et il est connecté au serveur mais quand j'envoie quelque chose au serveur je n'obtiens aucune réponse (dans l'exemple il est dit que je devrais voir une fenêtre d'alerte avec le même message que j'envoie dans le socket mais je ne le vois pas, bien que j'ai changé l'alerte pour un console.log mais quand même), qu'est-ce que je fais de travers ?
En settings.py :
INSTALLED_APPS = {
...
'channels',
'myapp',
...
}
...
# Channels settings
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgiref.inmemory.ChannelLayer",
"ROUTING": "myapp.routing.channel_routing",
},
}
En routing.py :
from channels.routing import route
from myapp.consumers import *
channel_routing = [
route("websocket.receive", ws_receive),
]
En consumers.py :
def ws_receive(message):
# ASGI WebSocket packet-received and send-packet message types
# both have a "text" key for their textual data.
message.reply_channel.send({
"text": message.content['text'],
})
Dans asgi.py
import os
from channels.asgi import get_channel_layer
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
channel_layer = get_channel_layer()
Ensuite, je lance : python manage.py runserver, et dans mon navigateur je vais à l'url du serveur et dans la console je mets ce qui suit :
socket = new WebSocket("ws://" + window.location.host + "/chat/");
socket.onmessage = function(e) {
alert(e.data);
}
socket.onopen = function() {
socket.send("hello world");
}
Là encore, je devrais voir apparaître une fenêtre d'alerte (ou le message console.log), mais je n'obtiens rien.
Les demandes que j'ai faites ont un statut d'attente (Bien que j'aie lu aquí et le premier commentaire dit que c'est normal)
La sortie du serveur ressemble à ceci :
A chaque fois que j'ai essayé d'envoyer quelque chose via le websocket dans le navigateur, le serveur se contente d'imprimer CONNECT mais aucun log de la console js ne s'affiche.