Compartilhamento de tecnologia

Explicação detalhada do Socket.IO em python

2024-07-12

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

Socket.IO É uma biblioteca de comunicação em tempo real, bidirecional e baseada em eventos, baseada em WebSocket. Ele foi originalmente projetado para Node.js, mas agora possui implementações em várias linguagens, incluindo Python. Em Python,python-socketio é uma biblioteca popular que permite implementar facilmente clientes e servidores Socket.IO. Esta biblioteca é particularmente útil para construir aplicações web que requerem troca de dados em tempo real, como aplicações de chat, sistemas de notificação em tempo real, jogos, etc.

Recursos do Python-SocketIO

  • Comunicação bidirecional: Cliente e servidor podem enviar e receber mensagens um para o outro.
  • Reconectar automaticamente: o cliente pode tentar se reconectar automaticamente ao servidor, o que é especialmente útil quando a rede está instável.
  • orientado a eventos: O modelo de programação baseado em eventos torna o desenvolvimento mais intuitivo e flexível.
  • Suporte multilíngue: Embora estejamos falando de Python aqui, o ecossistema Socket.IO suporta múltiplas linguagens e plataformas para fácil integração.
  • Compatível com WebSocket e sondagem longa: Mesmo em navegadores mais antigos que não suportam WebSocket, a comunicação em tempo real pode ser alcançada por meio de tecnologias como sondagem longa.

Instalar

Você pode instalá-lo via pippython-socketio

pip install python-socketio

Se você também deseja criar um servidor web e deseja que ele funcione como um servidor Socket.IO, você também pode precisar instalarFlask-SocketIO(Uma extensão Flask que integra Flask e Socket.IO):

pip install Flask-SocketIO

Crie um servidor usando Python-SocketIO

O seguinte é um simplesFlask-SocketIOExemplo de servidor, que utiliza o 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)

Neste exemplo, o servidor escuta/ Roteie e renderize uma página HTML (você mesmo precisa criar esta página e apresentar a biblioteca cliente Socket.IO).O servidor também escuta uma chamada chamadamessageevento, quando este evento é recebido, ele imprime o conteúdo da mensagem e transmite a mensagem de volta para todos os clientes conectados.

cliente

No lado do cliente (geralmente JavaScript no navegador), você precisa importar a biblioteca cliente Socket.IO e estabelecer uma conexão com o servidor. Aqui está um exemplo simples de cliente:

  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>

Neste exemplo, o cliente se conecta ao servidor, ouvindomessageevento e define umsendMessageFunção para enviar mensagens ao servidor.

Resumir

python-socketioeFlask-SocketIO Fornece ferramentas poderosas para criar aplicativos da web em tempo real. Ao aproveitar WebSockets e um modelo de programação orientado a eventos, você pode implementar facilmente recursos interativos complexos em tempo real.

Continuaremos a atualizar e compartilhar conteúdo relevante no futuro.Lembre-se de prestar atenção!