Teknologian jakaminen

Yksityiskohtainen kuvaus Socket.IO:sta pythonissa

2024-07-12

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

Socket.IO Se on WebSocketiin perustuva reaaliaikainen, kaksisuuntainen ja tapahtumapohjainen viestintäkirjasto. Se suunniteltiin alun perin Node.js:lle, mutta nyt se on toteutettu useilla kielillä, mukaan lukien Python. Pythonissa,python-socketio on suosittu kirjasto, jonka avulla voit helposti toteuttaa Socket.IO-asiakkaita ja palvelimia. Tämä kirjasto on erityisen hyödyllinen luotaessa verkkosovelluksia, jotka vaativat reaaliaikaista tiedonvaihtoa, kuten chat-sovellukset, reaaliaikaiset ilmoitusjärjestelmät, pelit jne.

Python-SocketIO:n ominaisuudet

  • Kaksisuuntainen viestintä: Asiakas ja palvelin voivat lähettää ja vastaanottaa viestejä toisilleen.
  • Muodosta yhteys automaattisesti: Asiakas voi automaattisesti yrittää muodostaa yhteyden uudelleen palvelimeen, mikä on erityisen hyödyllistä, kun verkko on epävakaa.
  • tapahtumavetoinen: Tapahtumapohjainen ohjelmointimalli tekee kehittämisestä intuitiivisempaa ja joustavampaa.
  • Monikielinen tuki: Vaikka puhumme Pythonista, Socket.IO-ekosysteemi tukee useita kieliä ja alustoja helpon integroinnin vuoksi.
  • Yhteensopiva WebSocketin ja pitkän kyselyn kanssa: Jopa vanhemmissa selaimissa, jotka eivät tue WebSocketia, reaaliaikainen viestintä voidaan saavuttaa teknologioiden, kuten pitkän kyselyn, avulla.

Asentaa

Voit asentaa sen pipin kauttapython-socketio

pip install python-socketio

Jos haluat myös luoda verkkopalvelimen ja haluat sen toimivan Socket.IO-palvelimena, saatat joutua asentamaanFlask-SocketIO(Flask-laajennus, joka yhdistää Flaskin ja Socket.IO:n):

pip install Flask-SocketIO

Luo palvelin Python-SocketIO:lla

Seuraava on yksinkertainenFlask-SocketIOPalvelinesimerkki, joka käyttää Flask-kehystä ja integroi Socket.IO:n:

  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)

Tässä esimerkissä palvelin kuuntelee/ Reititä ja renderöi HTML-sivu (sinun on luotava tämä sivu itse ja esitettävä Socket.IO-asiakaskirjasto).Palvelin myös kuuntelee soitettua puheluamessagetapahtuma, kun tämä tapahtuma vastaanotetaan, se tulostaa viestin sisällön ja lähettää viestin takaisin kaikille yhdistetyille asiakkaille.

asiakas

Asiakaspuolella (yleensä JavaScript selaimessa) sinun on tuotava Socket.IO-asiakaskirjasto ja muodostettava yhteys palvelimeen. Tässä on yksinkertainen asiakasesimerkki:

  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>

Tässä esimerkissä asiakas muodostaa yhteyden palvelimeen ja kuunteleemessagetapahtuma ja määrittelee asendMessageToiminto lähettää viestejä palvelimelle.

Tee yhteenveto

python-socketiojaFlask-SocketIO Tarjoaa tehokkaita työkaluja reaaliaikaisten verkkosovellusten rakentamiseen. Hyödyntämällä WebSocketsia ja tapahtumapohjaista ohjelmointimallia voit helposti toteuttaa monimutkaisia ​​reaaliaikaisia ​​interaktiivisia ominaisuuksia.

Jatkamme asiaankuuluvan sisällön päivittämistä ja jakamista tulevaisuudessa.Muista kiinnittää huomiota!