Berbagi teknologi

Penjelasan rinci tentang Socket.IO dengan python

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Socket.IO Ini adalah perpustakaan komunikasi real-time, dua arah, dan berbasis peristiwa berdasarkan WebSocket. Awalnya dirancang untuk Node.js, tetapi sekarang memiliki implementasi dalam berbagai bahasa, termasuk Python. Dengan Python,python-socketio adalah perpustakaan populer yang memungkinkan Anda mengimplementasikan klien dan server Socket.IO dengan mudah. Library ini sangat berguna untuk membangun aplikasi web yang memerlukan pertukaran data real-time, seperti aplikasi chatting, sistem notifikasi real-time, game, dll.

Fitur Python-SocketIO

  • Komunikasi dua arah: Klien dan server dapat mengirim dan menerima pesan satu sama lain.
  • Sambungkan kembali secara otomatis: Klien dapat secara otomatis mencoba menyambung kembali ke server, yang sangat berguna ketika jaringan tidak stabil.
  • didorong oleh peristiwa: Model pemrograman berbasis peristiwa membuat pengembangan lebih intuitif dan fleksibel.
  • Dukungan multi-bahasa: Meskipun kita berbicara tentang Python di sini, ekosistem Socket.IO mendukung berbagai bahasa dan platform untuk integrasi yang mudah.
  • Kompatibel dengan WebSocket dan polling panjang: Bahkan di browser lama yang tidak mendukung WebSocket, komunikasi real-time dapat dicapai melalui teknologi seperti long polling.

Install

Anda dapat menginstalnya melalui pippython-socketio

pip install python-socketio

Jika Anda juga ingin membuat server web dan ingin berfungsi ganda sebagai server Socket.IO, Anda mungkin juga perlu menginstalFlask-SocketIO(Ekstensi Flask yang mengintegrasikan Flask dan Socket.IO):

pip install Flask-SocketIO

Buat server menggunakan Python-SocketIO

Berikut ini adalah cara sederhananyaFlask-SocketIOContoh server, yang menggunakan framework Flask dan mengintegrasikan Socket.IO:

  1. from flask import Flask, render_template
  2. from flask_socketio import SocketIO, send
  3. app = Flask(__name__)
  4. app.config['SECRET_KEY'] = 'secret!'
  5. socketio = SocketIO(app)
  6. @app.route('/')
  7. def index():
  8. return render_template('index.html')
  9. @socketio.on('message')
  10. def handleMessage(msg):
  11. print('Message: ' + msg)
  12. send(msg, broadcast=True)
  13. if __name__ == '__main__':
  14. socketio.run(app)

Dalam contoh ini, server mendengarkan/ Rutekan dan render halaman HTML (Anda perlu membuat halaman ini sendiri dan memperkenalkan perpustakaan klien Socket.IO).Server juga mendengarkan panggilan yang dipanggilmessageacara, ketika acara ini diterima, ia mencetak isi pesan dan menyiarkan pesan kembali ke semua klien yang terhubung.

klien

Di sisi klien (biasanya JavaScript di browser), Anda perlu mengimpor perpustakaan klien Socket.IO dan membuat koneksi ke server. Berikut adalah contoh klien sederhana:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Socket.IO chat</title>
  5. <script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.0/socket.io.js"></script>
  6. <script>
  7. var socket = io('http://localhost:5000');
  8. socket.on('connect', function() {
  9. console.log('Connected to the server!');
  10. });
  11. socket.on('message', function(msg) {
  12. console.log('Received message: ' + msg);
  13. });
  14. function sendMessage() {
  15. var input = document.getElementById('messageInput');
  16. socket.emit('message', input.value);
  17. input.value = '';
  18. }
  19. </script>
  20. </head>
  21. <body>
  22. <input type="text" id="messageInput" autocomplete="off" /><button onclick="sendMessage()">Send</button>
  23. </body>
  24. </html>

Dalam contoh ini, klien terhubung ke server, mendengarkanmessageperistiwa dan mendefinisikan asendMessageBerfungsi untuk mengirim pesan ke server.

Meringkaskan

python-socketioDanFlask-SocketIO Menyediakan alat canggih untuk membangun aplikasi web real-time. Dengan memanfaatkan WebSockets dan model pemrograman berbasis peristiwa, Anda dapat dengan mudah mengimplementasikan fitur interaktif real-time yang kompleks.

Kami akan terus memperbarui dan membagikan konten yang relevan di masa mendatang.Ingatlah untuk memperhatikan!