Maison >développement back-end >Tutoriel Python >Programmation serveur Python : implémentation du serveur WebSocket

Programmation serveur Python : implémentation du serveur WebSocket

WBOY
WBOYoriginal
2023-06-19 09:51:104972parcourir

Ces dernières années, la technologie WebSocket est devenue de plus en plus populaire et est devenue le choix standard pour la communication en temps réel entre les navigateurs et les serveurs. En Python, nous pouvons implémenter le développement de serveurs WebSocket via certaines bibliothèques matures. Cet article explorera comment utiliser Python pour développer un serveur WebSocket basé sur l'introduction de la technologie WebSocket.

1. Qu'est-ce que WebSocket

WebSocket est un protocole de communication en duplex intégral sur une seule connexion TCP, c'est-à-dire qu'une communication en temps réel peut être réalisée entre le client et le serveur sans qu'il soit nécessaire d'ouvrir une nouvelle connexion HTTP pour chaque communication. WebSocket est largement utilisé dans les scénarios de communication en temps réel courants, tels que les salons de discussion, les jeux Web, la visualisation de données, etc.

Dans le protocole WebSocket, la communication entre le client et le serveur s'effectue via "Frame". La trame est l'unité de base de transmission de données dans WebSocket, composée de deux types : « trame de contrôle » et « trame de données ». Les trames de contrôle sont utilisées pour contrôler le processus d'interaction des informations, telles que les poignées de main et d'autres opérations sont utilisées pour transférer un contenu de données spécifique.

L'un des avantages de WebSocket est qu'il n'utilise qu'un seul socket TCP pour permettre une communication bidirectionnelle entre le client et le serveur, évitant ainsi le problème des connexions et fermetures HTTP multiples et réduisant les délais de communication.

2. Développer un serveur WebSocket en Python

Il existe d'excellentes bibliothèques open source tierces dans l'écosystème Python qui peuvent être utilisées pour implémenter un serveur WebSocket, telles que : Tornado , Twisted, aiohttp, Sanic, etc., parmi lesquels Tornado et Twisted sont les outils de programmation réseau traditionnels de Python, et ils constituent le meilleur choix lors de l'utilisation de Python pour développer des serveurs WebSocket.

Dans ce qui suit, nous utiliserons Tornado comme exemple pour présenter la méthode d'implémentation spécifique de développement d'un serveur WebSocket en Python.

Tout d'abord, vous devez installer la bibliothèque Tornado, qui peut être installée via la commande pip install tornado.

Ensuite, nous créons le serveur WebSocket basé sur Tornado, le code est le suivant :

import tornado.websocket
import tornado.httpserver
import tornado.ioloop
import tornado.web

class WebSocketHandler(tornado.websocket.WebSocketHandler):
    def open(self):
        print("WebSocket opened")

    def on_message(self, message):
        print("Message received: {}".format(message))
        self.write_message("You said: " + message)

    def on_close(self):
        print("WebSocket closed")

    def check_origin(self, origin):
        return True

app = tornado.web.Application([(r"/websocket", WebSocketHandler)])
server = tornado.httpserver.HTTPServer(app)
server.listen(8000)
tornado.ioloop.IOLoop.instance().start()

Le code ci-dessus définit une classe WebSocketHandler, qui implémente l'ouverture, la réception des messages et la fermeture du serveur WebSocket, etc. Parmi elles, la méthode open() est appelée après l'établissement de la connexion WebSocket, la méthode on_message() est appelée lorsqu'un message est reçu pendant le processus de transmission WebSocket et la méthode on_close() est appelée lorsque la connexion WebSocket est fermée. La méthode

check_origin() est utilisée pour configurer les requêtes inter-domaines. Dans cet exemple, nous autorisons toutes les origines. Dans la classe WebSocketHandler, nous traitons les requêtes HTTPRequest et WebSocketRequest en même temps, nous devons donc enregistrer la classe WebSocketHandler via l'application et spécifier le port d'écoute sur 8000.

Enfin, surveillez et traitez les demandes de connexion via IOLoop.

Après avoir exécuté ce code, vous pouvez démarrer le serveur WebSocket et saisir localhost:8000/websocket dans le navigateur pour tester la connexion.

3. Conclusion

Cet article présente le principe de la technologie WebSocket et la méthode d'implémentation de Python. En Python, nous pouvons utiliser Tornado pour implémenter le serveur WebSocket. , nous pouvons facilement ajouter des capacités de communication en temps réel à diverses applications Web. Si vous utilisez actuellement Python pour développer des applications Web et souhaitez utiliser WebSocket pour implémenter des fonctions de communication en temps réel, Tornado est un bon choix.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn