欢迎访问宙启技术站
智能推送

Python中socketio服务器的简单实现

发布时间:2023-12-14 00:40:24

在Python中使用Socket.IO实现一个服务器可以通过以下步骤完成:

1. 安装Socket.IO:在终端中运行以下命令来安装Socket.IO库:

   pip install python-socketio
   

2. 创建服务器脚本:创建一个Python脚本,例如server.py,并使用以下代码来实现Socket.IO服务器:

   from flask import Flask, render_template
   from flask_socketio import SocketIO, emit

   # 创建Flask应用
   app = Flask(__name__)
   # 设置应用的密钥
   app.config['SECRET_KEY'] = 'secret!'
   # 创建SocketIO实例并将应用与SocketIO绑定
   socketio = SocketIO(app)

   # 定义根路由
   @app.route('/')
   def index():
       return render_template('index.html')

   # 定义socket.io事件处理函数
   @socketio.on('message')
   def handle_message(message):
       print('Message:', message)
       emit('response', {'data': 'Server response'})

   if __name__ == '__main__':
       # 运行应用并监听socket.io连接
       socketio.run(app)
   

3. 创建HTML页面:创建一个HTML文件,例如index.html,并使用以下代码:

   <!DOCTYPE html>
   <html>
   <head>
       <title>Socket.IO Example</title>
       <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.1/socket.io.js"></script>
   </head>
   <body>
       <h1>Socket.IO Example</h1>
       <p id="message"></p>
       <button id="sendBtn">Send Message to Server</button>
       <script type="text/javascript">
           // 创建Socket.IO实例并连接到服务器
           var socket = io.connect('http://localhost:5000');

           // 监听服务器的响应事件
           socket.on('response', function(data) {
               document.getElementById('message').innerHTML = 'Server response: ' + data.data;
           });

           // 发送消息给服务器
           document.getElementById('sendBtn').addEventListener('click', function() {
               socket.emit('message', 'Hello Server!');
           });
       </script>
   </body>
   </html>
   

4. 运行服务器:在终端中运行以下命令以启动服务器:

   python server.py
   

服务器将监听在http://localhost:5000上。

以上代码实现了一个简单的Socket.IO服务器和一个基本的HTML页面,页面上有一个按钮,当点击按钮时,会将消息发送到服务器,并显示服务器的响应消息。

当客户端与服务器建立连接后,客户端可以使用socket.emit(event, data)方法发送消息给服务器,服务器通过定义的事件处理函数(使用@socketio.on('event')装饰器定义的函数)来处理消息,并通过emit(event, data)方法向客户端发送响应消息。