Heim  >  Artikel  >  Backend-Entwicklung  >  Websocket-Programmierung in Python

Websocket-Programmierung in Python

PHPz
PHPzOriginal
2023-06-17 08:07:155414Durchsuche

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.

  1. Installieren Sie die WebSocket-Server-Bibliothek

Geben Sie den folgenden Befehl in der Befehlszeile ein, um die WebSocket-Server-Bibliothek zu installieren:

pip install websocket-server
  1. Servercode schreiben

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()
  1. Führen Sie den Websocket-Server aus.

Geben Sie den folgenden Befehl in die Befehlszeile ein, um den WebSocket-Server zu starten:

python server.py
  1. Schreiben Sie den Client-Code In Python müssen Sie ein WebSocketClient-Objekt erstellen und dann mehrere seiner Methoden aufrufen, z. B. connect (), send (), close () usw., um die Verbindungs-, Datensende- und Schließvorgänge abzuschließen.
Der spezifische Code lautet wie folgt:

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()

Die oben genannten Schritte und Implementierungsmethoden der Websocket-Programmierung in Python können auf diese Weise Anwendungen wie Echtzeitkommunikation und Online-Spiele realisieren. Natürlich stehen neben der WebSocket-Server-Bibliothek auch andere WebSocket-Bibliotheken zur Auswahl, und Entwickler können sie entsprechend ihren eigenen Anforderungen auswählen und ausprobieren.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn