Κοινή χρήση τεχνολογίας

Λεπτομερής εξήγηση του Socket.IO σε python

2024-07-12

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

Socket.IO Είναι μια βιβλιοθήκη επικοινωνίας σε πραγματικό χρόνο, αμφίδρομη και βασισμένη σε συμβάντα που βασίζεται στο WebSocket. Αρχικά σχεδιάστηκε για το Node.js, αλλά τώρα έχει υλοποιήσεις σε πολλές γλώσσες, συμπεριλαμβανομένης της Python. Στην Python,python-socketio είναι μια δημοφιλής βιβλιοθήκη που σας επιτρέπει να εφαρμόζετε εύκολα πελάτες και διακομιστές Socket.IO. Αυτή η βιβλιοθήκη είναι ιδιαίτερα χρήσιμη για τη δημιουργία διαδικτυακών εφαρμογών που απαιτούν ανταλλαγή δεδομένων σε πραγματικό χρόνο, όπως εφαρμογές συνομιλίας, συστήματα ειδοποιήσεων σε πραγματικό χρόνο, παιχνίδια κ.λπ.

Χαρακτηριστικά του Python-SocketIO

  • Αμφίδρομη επικοινωνία: Ο πελάτης και ο διακομιστής μπορούν να στέλνουν και να λαμβάνουν μηνύματα ο ένας στον άλλο.
  • Αυτόματη επανασύνδεση: Ο πελάτης μπορεί να προσπαθήσει αυτόματα να επανασυνδεθεί στον διακομιστή, κάτι που είναι ιδιαίτερα χρήσιμο όταν το δίκτυο είναι ασταθές.
  • γεγονός που καθοδηγείται: Το μοντέλο προγραμματισμού που βασίζεται σε συμβάντα κάνει την ανάπτυξη πιο διαισθητική και ευέλικτη.
  • Υποστήριξη πολλών γλωσσών: Αν και εδώ μιλάμε για Python, το οικοσύστημα Socket.IO υποστηρίζει πολλές γλώσσες και πλατφόρμες για εύκολη ενσωμάτωση.
  • Συμβατό με το WebSocket και το long polling: Ακόμη και σε παλαιότερα προγράμματα περιήγησης που δεν υποστηρίζουν το WebSocket, η επικοινωνία σε πραγματικό χρόνο μπορεί να επιτευχθεί μέσω τεχνολογιών όπως η μακροχρόνια ψηφοφορία.

Εγκαθιστώ

Μπορείτε να το εγκαταστήσετε μέσω pippython-socketio

pip install python-socketio

Εάν θέλετε επίσης να δημιουργήσετε έναν διακομιστή web και θέλετε να διπλασιαστεί ως διακομιστής Socket.IO, μπορεί επίσης να χρειαστεί να εγκαταστήσετεFlask-SocketIO(Μια επέκταση Flask που ενσωματώνει το Flask και το Socket.IO):

pip install Flask-SocketIO

Δημιουργήστε έναν διακομιστή χρησιμοποιώντας Python-SocketIO

Το παρακάτω είναι ένα απλόFlask-SocketIOΠαράδειγμα διακομιστή, ο οποίος χρησιμοποιεί το πλαίσιο Flask και ενσωματώνει το 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)

Σε αυτό το παράδειγμα, ο διακομιστής ακούει/ Δρομολογήστε και αποδώστε μια σελίδα HTML (πρέπει να δημιουργήσετε αυτήν τη σελίδα μόνοι σας και να εισαγάγετε τη βιβλιοθήκη πελάτη Socket.IO).Ο διακομιστής ακούει επίσης μια κλήση που καλείταιmessageεκδήλωση, όταν λαμβάνεται αυτό το συμβάν, εκτυπώνει το περιεχόμενο του μηνύματος και μεταδίδει το μήνυμα σε όλους τους συνδεδεμένους πελάτες.

πελάτης

Στην πλευρά του πελάτη (συνήθως JavaScript στο πρόγραμμα περιήγησης), πρέπει να εισαγάγετε τη βιβλιοθήκη πελάτη Socket.IO και να δημιουργήσετε μια σύνδεση με τον διακομιστή. Ακολουθεί ένα απλό παράδειγμα πελάτη:

  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>

Σε αυτό το παράδειγμα, ο πελάτης συνδέεται με τον διακομιστή, ακούγονταςmessageγεγονός και ορίζει αsendMessageΛειτουργία αποστολής μηνυμάτων στον διακομιστή.

Συνοψίζω

python-socketioκαιFlask-SocketIO Παρέχει ισχυρά εργαλεία για τη δημιουργία διαδικτυακών εφαρμογών σε πραγματικό χρόνο. Αξιοποιώντας τα WebSockets και ένα μοντέλο προγραμματισμού που βασίζεται σε συμβάντα, μπορείτε εύκολα να εφαρμόσετε σύνθετες διαδραστικές λειτουργίες σε πραγματικό χρόνο.

Θα συνεχίσουμε να ενημερώνουμε και να μοιραζόμαστε σχετικό περιεχόμενο στο μέλλον.Θυμηθείτε να δώσετε προσοχή!