Rumah > Artikel > pembangunan bahagian belakang > Cara menggunakan WebSocket dalam FastAPI untuk komunikasi dua hala
Cara menggunakan WebSocket untuk komunikasi dua hala dalam FastAPI
Pengenalan:
WebSocket ialah protokol yang membolehkan komunikasi dua hala dalam aplikasi web. Tidak seperti model tindak balas permintaan HTTP tradisional, WebSocket membenarkan pelayan menghantar mesej terus kepada klien tanpa klien memulakan permintaan secara eksplisit. Dalam FastAPI, kita boleh menggunakan WebSocket dengan mudah untuk mencapai komunikasi dua hala masa nyata. Artikel ini akan memperkenalkan cara menggunakan WebSocket dalam FastAPI untuk mencapai komunikasi dua hala, dengan contoh kod.
Langkah 1: Pasang FastAPI dan uvicorn
Pertama, kita perlu memastikan bahawa Python 3.7 atau lebih tinggi dipasang. Kemudian, kita boleh memasang FastAPI dan uvicorn menggunakan pip:
pip install fastapi uvicorn
Langkah 2: Buat aplikasi FastAPI
Seterusnya, kita boleh mencipta aplikasi FastAPI. Dalam fail .py baharu, tambahkan kod berikut:
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}")
Kod di atas mencipta aplikasi FastAPI dan mentakrifkan fungsi websocket_endpoint untuk mengendalikan sambungan WebSocket. Dalam fungsi ini, kami mula-mula memanggil menunggu websocket.accept()
untuk menerima sambungan WebSocket. Kami kemudian menggunakan gelung tak terhingga untuk terus mendengar mesej yang dihantar daripada klien. Setelah mesej diterima, kami menggunakan await websocket.send_text()
untuk menghantar semula mesej balasan kepada klien. 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
http://localhost:8000
. 🎜🎜Langkah Empat: Uji Sambungan WebSocket🎜Menggunakan sebarang alat klien WebSocket (seperti alatan pembangun penyemak imbas atau Posman), kami boleh menguji sambungan WebSocket. Buka alat klien WebSocket dan buat sambungan ke ws://localhost:8000/ws
. 🎜🎜Setelah sambungan berjaya diwujudkan, kami boleh menghantar mesej ke pelayan. Pelayan akan membalas kepada klien dengan mesej yang diterima. 🎜🎜Contoh kod: 🎜Berikut ialah contoh kod menggunakan JavaScript untuk menghantar dan menerima mesej melalui sambungan WebSocket: 🎜rrreee🎜Kod ini menggunakan API WebSocket untuk mewujudkan sambungan dan mendengar pembukaan sambungan, penerimaan mesej dan penutupan acara. Apabila sambungan dibuka, hantar mesej kepada pelayan. Apabila menerima mesej daripada pelayan, cetak kandungan mesej. Apabila sambungan ditutup, cetak mesej tertutup sambungan. 🎜🎜Kesimpulan: 🎜Melalui langkah di atas, kita boleh menggunakan WebSocket dalam FastAPI untuk mencapai komunikasi dua hala. Kita boleh menggunakan kelas WebSocket
yang disediakan oleh FastAPI untuk memproses dan mengurus sambungan WebSocket untuk mencapai komunikasi dua hala masa nyata. Dalam artikel ini, kami juga menyertakan contoh kod JavaScript yang menunjukkan cara menghantar dan menerima mesej menggunakan sambungan WebSocket. Saya harap artikel ini akan membantu anda memahami dan menggunakan teknologi WebSocket. 🎜Atas ialah kandungan terperinci Cara menggunakan WebSocket dalam FastAPI untuk komunikasi dua hala. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!