Dalam beberapa tahun kebelakangan ini, teknologi WebSocket telah menjadi semakin popular dan telah menjadi pilihan standard untuk komunikasi masa nyata antara penyemak imbas dan pelayan. Dalam Python, kita boleh melaksanakan pembangunan pelayan WebSocket melalui beberapa perpustakaan matang. Artikel ini akan meneroka cara menggunakan Python untuk membangunkan pelayan WebSocket berdasarkan pengenalan teknologi WebSocket.
1 Apakah itu WebSocket
WebSocket ialah protokol untuk komunikasi dupleks penuh pada sambungan TCP tunggal, iaitu komunikasi masa nyata boleh dicapai antara klien dan pelayan tanpa A sambungan HTTP baharu perlu dibuka untuk setiap komunikasi. WebSocket digunakan secara meluas dalam senario komunikasi masa nyata biasa, seperti bilik sembang, permainan web, visualisasi data, dsb.
Dalam protokol WebSocket, komunikasi antara klien dan pelayan diselesaikan melalui "Frame". Frame ialah unit asas penghantaran data dalam WebSocket, yang terdiri daripada dua jenis: "frame kawalan" dan "bingkai data". Bingkai kawalan digunakan untuk mengawal proses interaksi maklumat, seperti jabat tangan dan operasi lain bingkai data digunakan untuk memindahkan kandungan data tertentu.
Satu kelebihan WebSocket ialah ia hanya menggunakan soket TCP tunggal untuk membenarkan komunikasi dua hala antara klien dan pelayan, mengelakkan masalah sambungan dan penutupan HTTP berbilang, dan mengurangkan kelewatan komunikasi.
2. Bangunkan pelayan WebSocket dalam Python
Terdapat beberapa perpustakaan sumber terbuka pihak ketiga yang sangat baik dalam ekosistem Python yang boleh digunakan untuk melaksanakan pelayan WebSocket, seperti: Tornado, Twisted, aiohttp , Sanic, dsb., antaranya Kedua-dua Tornado dan Twisted ialah alat pengaturcaraan rangkaian tradisional Python, dan ia adalah pilihan terbaik semasa membangunkan pelayan WebSocket dalam Python.
Dalam perkara berikut, kami akan menggunakan Tornado sebagai contoh untuk memperkenalkan kaedah pelaksanaan khusus untuk membangunkan pelayan WebSocket dalam Python.
Pertama, anda perlu memasang pustaka Tornado, yang boleh dipasang melalui perintah pip install tornado.
Seterusnya, kami mencipta pelayan WebSocket berdasarkan Tornado, kodnya adalah seperti berikut:
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()
Kod di atas mentakrifkan kelas WebSocketHandler, yang melaksanakan pembukaan, penerimaan mesej dan penutupan WebSocket pelayan. Antaranya, kaedah open() dipanggil selepas sambungan WebSocket diwujudkan, kaedah on_message() dipanggil apabila mesej diterima semasa proses penghantaran WebSocket, dan kaedah on_close() dipanggil apabila sambungan WebSocket ditutup.
Kaedah check_origin() digunakan untuk mengkonfigurasi permintaan silang asal Dalam contoh ini, kami membenarkan semua asal. Dalam kelas WebSocketHandler, kami memproses permintaan HTTPRequest dan WebSocketRequest pada masa yang sama, jadi kami perlu mendaftarkan kelas WebSocketHandler melalui aplikasi dan menentukan port pendengaran sebagai 8000.
Akhir sekali, pantau dan proses permintaan sambungan melalui IOLoop.
Selepas menjalankan kod ini, anda boleh memulakan pelayan WebSocket dan masukkan localhost:8000/websocket dalam penyemak imbas untuk menguji sambungan.
3. Kesimpulan
Artikel ini memperkenalkan prinsip teknologi WebSocket dan kaedah pelaksanaan dalam Python, kita boleh menggunakan Tornado untuk melaksanakan pelayan WebSocket, kita boleh dengan mudah berkomunikasi dalam masa nyata Fungsi ditambahkan pada pelbagai aplikasi web. Jika anda sedang menggunakan Python untuk membangunkan aplikasi web dan ingin menggunakan WebSocket untuk melaksanakan fungsi komunikasi masa nyata, maka Tornado ialah pilihan yang baik.
Atas ialah kandungan terperinci Pengaturcaraan pelayan Python: melaksanakan pelayan WebSocket. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!