Raspberry : un websocket pour recevoir et envoyer des messages en même temps

Le premier programme de Websocket serveur en python :

Pour, à la fois recevoir et envoyer des messages sur la même connexion, on combine les deux fonctions send() et recv() en les faisant s'exécuter dans des tâches parallèles :

#!/usr/bin/env python3
import asyncio
import websockets
 
# Gestion de l'envoi des messages du serveur au client
async def gestion_envoi_message(websocket): 
    i = 0
    # boucle infinie pour envoyer toutes les secondes un message ; 
    while True:
       await websocket.send("Bonjour {}".format(nb))
       i = i + 1
       await asyncio.sleep(1)
 
# Gestion des messages recus du client
async def gestion_reception_message(websocket):
    while True:
        # reception du message d'un client
        message = await websocket.recv()
        print(message)
 
# fonction lancee à chaque connexion d'un client
async def echange(websocket,path): # définir la fonction comme asynchrone
    #envoyer des messages en parallèle
    envoyer = asyncio.ensure_future(gestion_envoi_message(websocket))
    #recevoir message en parallèle
    recevoir = asyncio.ensure_future(gestion_reception_message(websocket))
    termine, attente = await asyncio.wait(
            [envoyer, recevoir],
            return_when = asyncio.FIRST_COMPLETED,
    )
 
# Definir la fonction qui sera appelee par le serveur a la connexion d'un client
lancement_serveur = websockets.serve(echange,'10.3.141.1', 5678)  
# Creation de la boucle d'evenement (event loop) 
loop = asyncio.get_event_loop()
loop.run_until_complete(lancement_serveur)
loop.run_forever()
loop.close()

Programme javascript du client

Dans la page Web HTML :