Mit der rasanten Entwicklung des Internets wird das Websocket-Protokoll auch häufig als neues Kommunikationsprotokoll verwendet. Als gängige Programmiersprache verfügt Python über viele hervorragende Websocket-Bibliotheken wie Tornado und WebSocket-Server, die Entwicklern gute Unterstützung bieten.
In diesem Artikel werden das Websocket-Protokoll und seine Unterschiede zum HTTP-Protokoll sowie die Schritte und Implementierungsmethoden für die Entwicklung von Websocket-Anwendungen mit Python vorgestellt.
1. Einführung in das Websocket-Protokoll
Das Websocket-Protokoll ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll läuft. Dieses Protokoll stellt eine dauerhafte Verbindung bereit, ermöglicht eine bidirektionale Datenübertragung in Echtzeit zwischen dem Client und dem Server und kann in Echtzeitkommunikation, Online-Spielen und anderen Szenarien verwendet werden.
Die Merkmale des Websocket-Protokolls sind wie folgt:
(1) Die gesamte Datenübertragung basiert auf Frame (Frame).
(2) Das Websocket-Protokoll verwendet während der Handshake-Phase das HTTP-Protokoll.
(3) Das Websocket-Protokoll bietet zwei Arten von Frames: Datenframes und Kontrollframes. Datenrahmen werden zum Übertragen von Nachrichten und Steuerrahmen zur Aufrechterhaltung des Verbindungsstatus verwendet.
(4) Das Websocket-Protokoll bietet einen Heartbeat-Mechanismus, um die Stabilität der Verbindung aufrechtzuerhalten.
(5) Das Websocket-Protokoll kann über verschlüsseltes SSL/TLS und unverschlüsselte Methoden kommunizieren.
2. Der Unterschied zwischen Websocket-Protokoll und HTTP-Protokoll
Websocket-Protokoll und HTTP-Protokoll sind beide Protokolle der Anwendungsschicht, es gibt jedoch die folgenden Hauptunterschiede zwischen ihnen:
(1) Websocket ist eine dauerhafte Verbindung und HTTP ist eine kurze Verbindung.
(2) Das Websocket-Protokoll verwendet das HTTP-Protokoll für die Kommunikation während der Handshake-Phase, die Websocket-Handshake-Phase muss jedoch nur einmal durchgeführt werden, und dann kann eine Echtzeit-Datenkommunikation durchgeführt werden.
(3) Das Websocket-Protokoll verwendet Binärrahmen und Textrahmen zur Datenübertragung, während das HTTP-Protokoll nur Textdaten übertragen kann.
(4) Das Websocket-Protokoll kann eine bidirektionale Datenübertragung durchführen, während das HTTP-Protokoll nur eine einseitige Datenübertragung durchführen kann.
3. Python implementiert Websocket-Anwendungen
Es gibt viele Websocket-Bibliotheken in Python, unter denen Tornado und WebSocket-Server die am häufigsten verwendeten sind. In diesem Artikel wird WebSocket-Server als Beispiel verwendet, um die Verwendung von Python zum Implementieren von Websocket-Anwendungen vorzustellen.
Geben Sie den folgenden Befehl in der Befehlszeile ein, um die WebSocket-Server-Bibliothek zu installieren:
pip install websocket-server
Um einen Websocket-Server in Python zu implementieren, müssen Sie zuerst Folgendes tun Erstellen Sie ein WebsocketServer-Objekt. Überladen Sie dann mehrere seiner Ereignismethoden, z. B. on_open(), on_message(), on_close() usw., um Vorgänge wie Datenverbindung, Datenempfang und Verbindungsschließen abzuschließen.
Der spezifische Code lautet wie folgt:
from websocket_server import WebsocketServer # 客户端连接时触发 def new_client(client, server): print("New client connected and was given id %d" % client["id"]) server.send_message_to_all("Hey all, a new client has joined us") # 接收到客户端消息时触发 def message_received(client, server, message): print("Client(%d) said: %s" % (client["id"], message)) server.send_message_to_all("Client(%d) said: %s" % (client["id"], message)) # 客户端关闭连接时触发 def client_left(client, server): print("Client(%d) disconnected" % client["id"]) # 建立 WebSocketServer 对象,监听 9001 端口 server = WebsocketServer(9001) server.set_fn_new_client(new_client) server.set_fn_message_received(message_received) server.set_fn_client_left(client_left) # 启动服务器 server.run_forever()
Geben Sie den folgenden Befehl in die Befehlszeile ein, um den WebSocket-Server zu starten:
python server.py
from websocket import create_connection # 建立 WebSocket 连接 ws = create_connection("ws://localhost:9001/") # 发送消息 ws.send("Hello, world!") # 接收消息 result = ws.recv() print("Received '%s'" % result) # 关闭 WebSocket 连接 ws.close()
Das obige ist der detaillierte Inhalt vonWebsocket-Programmierung in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!