Les Websockets permettent, dans un réseau, de gérer en temps réel la communication entre un serveur et un client :
$ pip3 install websockets
#!/usr/bin/env python import asyncio import websockets async def hello(websocket, path): # le serveur est en attente du message d'un client qui se connecte message_recu_du_client = await websocket.recv() print(message_recu_du_client) # le serveur envoie un message au lient qui s'est connecté message_pour_le_client = "Message bien reçu" await websocket.send(message_pour_le_client) print(message_pour_le_client) start_server = websockets.serve(hello, 'localhost', 8765) loop = asyncio.get_event_loop() loop.run_until_complete(start_server) loop.run_forever()
Explications :
Pour avoir des informations sur le Websocket créé lors de la connexion d'un client :
while True: ... instructions pour générer le message ... ou bien si on souhaite utiliser une fonction message = await fonctionQuiGenereLeMessage() await websocket.send(message)
while True: message = await websocket.recv() ... instructions pour traiter le message ... ou bien si on souhaite utiliser une fonction await fonctionQuiTraiteDuMessage(message)
Pour la version de Python >= 3.6 la réception des messages peut s'écrire de la manière suivante :
async for message in websocket: ... instructions ... ou bien si on souhaite utiliser une fonction await fonctionQuiTraiteDuMessage(message)
Une page Web peut contenir des instructions javascript et utiliser les websockets pour pourvoir communiquer avec le serveur. Voici un exemple de code à mettre dans une page HTML.
<!DOCTYPE html> <html> <head> <title>Client utilisant un WebSocket</title> </head> <body> <script> var ws = new WebSocket("ws://adresssipduserveur:8765/"), ws.onmessage = function (event) { alert(event.data); }; </script> </body> </html>