Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie WebSocket in FastAPI für die bidirektionale Kommunikation

So verwenden Sie WebSocket in FastAPI für die bidirektionale Kommunikation

PHPz
PHPzOriginal
2023-07-29 22:12:223461Durchsuche

So verwenden Sie WebSocket für die bidirektionale Kommunikation in FastAPI

Einführung:
WebSocket ist ein Protokoll, das die bidirektionale Kommunikation in Webanwendungen ermöglicht. Im Gegensatz zum herkömmlichen HTTP-Request-Response-Modell ermöglicht WebSocket dem Server, Nachrichten direkt an den Client zu senden, ohne dass der Client explizit eine Anfrage initiiert. In FastAPI können wir WebSocket problemlos verwenden, um eine bidirektionale Kommunikation in Echtzeit zu erreichen. In diesem Artikel wird anhand von Codebeispielen erläutert, wie WebSocket in FastAPI verwendet wird, um eine bidirektionale Kommunikation zu erreichen.

Schritt 1: FastAPI und uvicorn installieren
Zuerst müssen wir sicherstellen, dass Python 3.7 oder höher installiert ist. Dann können wir FastAPI und uvicorn mit pip installieren:

pip install fastapi uvicorn

Schritt 2: Erstellen Sie eine FastAPI-Anwendung
Als nächstes können wir eine FastAPI-Anwendung erstellen. Fügen Sie in einer neuen .py-Datei den folgenden Code hinzu:

from fastapi import FastAPI, WebSocket

app = FastAPI()

@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    while True:
        data = await websocket.receive_text()
        await websocket.send_text(f"Message received: {data}")

Der obige Code erstellt eine FastAPI-Anwendung und definiert eine websocket_endpoint-Funktion zur Verarbeitung von WebSocket-Verbindungen. In dieser Funktion rufen wir zunächst await websocket.accept() auf, um die WebSocket-Verbindung zu akzeptieren. Anschließend verwenden wir eine Endlosschleife, um kontinuierlich auf vom Client gesendete Nachrichten zu warten. Sobald die Nachricht empfangen wurde, verwenden wir await websocket.send_text(), um die Antwortnachricht an den Client zurückzusenden. await websocket.accept()来接受WebSocket连接。然后,我们使用一个无限循环来持续监听从客户端发送的消息。一旦接收到消息,我们使用await websocket.send_text()将回复消息发送回客户端。

步骤三:启动应用
我们可以使用uvicorn命令启动FastAPI应用。在终端执行以下命令:

uvicorn main:app --reload

这将启动一个本地服务器,并监听在http://localhost:8000上。

步骤四:测试WebSocket连接
使用任何WebSocket客户端工具(例如浏览器的开发者工具或Postman),我们可以测试WebSocket连接。打开WebSocket客户端工具,并建立到ws://localhost:8000/ws的连接。

一旦连接建立成功,我们可以发送消息到服务器。服务器会将接收到的消息回复给客户端。

代码示例:
下面是一个使用JavaScript的代码示例,通过WebSocket连接发送并接收消息:

const socket = new WebSocket('ws://localhost:8000/ws');

socket.onopen = () => {
  console.log('WebSocket连接已建立');
  socket.send('Hello, server!');
};

socket.onmessage = (event) => {
  console.log('收到服务器的消息:', event.data);
};

socket.onclose = () => {
  console.log('WebSocket连接已关闭');
};

这段代码使用WebSocket的API来建立连接,并监听连接的打开、消息的接收和连接的关闭事件。当连接打开时,发送消息到服务器。当收到服务器的消息时,打印消息内容。当连接关闭时,打印连接关闭的消息。

结论:
通过以上步骤,我们可以在FastAPI中使用WebSocket实现双向通信。我们可以使用FastAPI提供的WebSocket

Schritt 3: Starten Sie die Anwendung🎜Wir können den Befehl uvicorn verwenden, um die FastAPI-Anwendung zu starten. Führen Sie den folgenden Befehl im Terminal aus: 🎜rrreee🎜Dadurch wird ein lokaler Server gestartet und auf http://localhost:8000 überwacht. 🎜🎜Schritt vier: WebSocket-Verbindung testen🎜Mit einem beliebigen WebSocket-Client-Tool (z. B. den Entwicklertools des Browsers oder Postman) können wir die WebSocket-Verbindung testen. Öffnen Sie das WebSocket-Client-Tool und stellen Sie eine Verbindung zu ws://localhost:8000/ws her. 🎜🎜Sobald die Verbindung erfolgreich hergestellt wurde, können wir Nachrichten an den Server senden. Der Server antwortet dem Client mit der empfangenen Nachricht. 🎜🎜Codebeispiel: 🎜Das Folgende ist ein Codebeispiel, das JavaScript zum Senden und Empfangen von Nachrichten über eine WebSocket-Verbindung verwendet: 🎜rrreee🎜Dieser Code verwendet die WebSocket-API, um eine Verbindung herzustellen und auf das Öffnen der Verbindung und den Empfang von Nachrichten zu warten und das Schließen der Verbindung. Wenn die Verbindung geöffnet ist, senden Sie eine Nachricht an den Server. Wenn Sie eine Nachricht vom Server erhalten, drucken Sie den Nachrichteninhalt aus. Wenn die Verbindung geschlossen ist, wird eine Meldung über die geschlossene Verbindung gedruckt. 🎜🎜Fazit: 🎜Durch die oben genannten Schritte können wir WebSocket in FastAPI verwenden, um eine bidirektionale Kommunikation zu erreichen. Wir können die von FastAPI bereitgestellte Klasse WebSocket verwenden, um WebSocket-Verbindungen zu verarbeiten und zu verwalten und so eine bidirektionale Kommunikation in Echtzeit zu erreichen. In diesem Artikel fügen wir auch ein JavaScript-Codebeispiel ein, das zeigt, wie Nachrichten über eine WebSocket-Verbindung gesendet und empfangen werden. Ich hoffe, dass dieser Artikel Ihnen hilft, die WebSocket-Technologie zu verstehen und anzuwenden. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie WebSocket in FastAPI für die bidirektionale Kommunikation. 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