Condivisione della tecnologia

Spiegazione dettagliata di Socket.IO in Python

2024-07-12

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

Socket.IO È una libreria di comunicazione in tempo reale, bidirezionale e basata su eventi basata su WebSocket. È stato originariamente progettato per Node.js, ma ora ha implementazioni in più linguaggi, incluso Python. In Pitone,python-socketio è una libreria popolare che consente di implementare facilmente client e server Socket.IO. Questa libreria è particolarmente utile per creare applicazioni web che richiedono lo scambio di dati in tempo reale, come applicazioni di chat, sistemi di notifica in tempo reale, giochi, ecc.

Funzionalità di Python-SocketIO

  • Comunicazione bidirezionale: Client e server possono inviarsi e ricevere messaggi tra loro.
  • Riconnettersi automaticamente: Il client può tentare automaticamente di riconnettersi al server, il che è particolarmente utile quando la rete è instabile.
  • evento guidato: Il modello di programmazione basato sugli eventi rende lo sviluppo più intuitivo e flessibile.
  • Supporto multilingue: Anche se qui stiamo parlando di Python, l'ecosistema Socket.IO supporta più linguaggi e piattaforme per una facile integrazione.
  • Compatibile con WebSocket e polling lungo: Anche nei browser più vecchi che non supportano WebSocket, la comunicazione in tempo reale può essere ottenuta tramite tecnologie come il long polling.

Installare

Puoi installarlo tramite pippython-socketio

pip install python-socketio

Se desideri anche creare un server Web e vuoi che raddoppi come server Socket.IO, potrebbe essere necessario installare ancheFlask-SocketIO(Un'estensione Flask che integra Flask e Socket.IO):

pip install Flask-SocketIO

Crea un server utilizzando Python-SocketIO

Quello che segue è un sempliceFlask-SocketIOEsempio di server, che utilizza il framework Flask e integra 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)

In questo esempio, il server è in ascolto/ Indirizzare ed eseguire il rendering di una pagina HTML (è necessario creare questa pagina manualmente e introdurre la libreria client Socket.IO).Il server resta in ascolto anche per una chiamata chiamatamessageevento, quando viene ricevuto questo evento, stampa il contenuto del messaggio e ritrasmette il messaggio a tutti i client connessi.

cliente

Sul lato client (solitamente JavaScript nel browser) è necessario importare la libreria client Socket.IO e stabilire una connessione al server. Ecco un semplice esempio di client:

  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>

In questo esempio, il client si connette al server, in ascoltomessageevento e definisce asendMessageFunzione per inviare messaggi al server.

Riassumere

python-socketioEFlask-SocketIO Fornisce potenti strumenti per creare applicazioni Web in tempo reale. Sfruttando i WebSocket e un modello di programmazione basato sugli eventi, puoi facilmente implementare complesse funzionalità interattive in tempo reale.

Continueremo ad aggiornare e condividere contenuti pertinenti in futuro.Ricordati di prestare attenzione!