使用Python实现WebSocket通信的完整例子!

下面是一个后端使用Python实现 WebSocket 通信的示例,包含了前后端的代码和说明。

后端实现(Python Flask + Flask-SocketIO)

环境准备

确保你的环境中安装了 Flask 和 Flask-SocketIO。
你可以通过以下命令安装:

pip install Flask Flask-SocketIO

创建后端代码

然后创建一个名为 app.py 的文件,并在其中添加以下代码:

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

# 创建 Flask 应用实例
app = Flask(__name__)
# 初始化 SocketIO
socketio = SocketIO(app)

@app.route('/')
def index():
    # 渲染前端 HTML 页面
    return render_template('index.html')

@socketio.on('message')
def handle_message(msg):
    # 处理接收到的消息
    print('Received message: ' + msg)
    # 向所有连接的客户端广播响应消息
    emit('response', 'Echo: ' + msg, broadcast=True)

if __name__ == '__main__':
    # 运行 Flask 应用
    socketio.run(app, debug=True)
  • Flask:创建一个 Flask 应用实例。
  • SocketIO:用于处理 WebSocket 通信。
  • @app.route('/'):定义一个路由,当访问根路径时,返回 index.html
  • @socketio.on('message'):处理名为 message 的事件,接收到消息后,将其打印并返回一个响应。
  • emit('response', ...):向所有连接的客户端发送消息。

前端实现(HTML + JavaScript)

在同一目录下创建一个 templates 文件夹,并在其中创建 index.html 文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>WebSocket Example</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.0/socket.io.js"></script>
</head>
<body>
    <h1>WebSocket Communication</h1>
    <input id="messageInput" type="text" placeholder="Enter a message">
    <button id="sendButton">Send</button>
    <ul id="messages"></ul>

    <script>
        // 创建与服务器的 WebSocket 连接
        const socket = io();

        // 绑定点击事件,发送消息
        document.getElementById('sendButton').onclick = function() {
            const message = document.getElementById('messageInput').value;
            socket.emit('message', message);  // 发送消息
            document.getElementById('messageInput').value = '';  // 清空输入框
        };

        // 监听来自服务器的响应消息
        socket.on('response', function(msg) {
            const li = document.createElement('li');
            li.textContent = msg;  // 将消息显示在页面上
            document.getElementById('messages').appendChild(li);
        });
    </script>
</body>
</html>
  • HTML 部分定义了一个输入框、一个按钮和一个列表,用于显示消息。
  • JavaScript 部分使用 Socket.IO 创建与服务器的 WebSocket 连接。
  • 点击“Send”按钮时,会将输入框中的消息发送给服务器。
  • 通过 socket.on('response', ...) 监听服务器的响应,将其添加到消息列表中。

运行

  1. 启动后端服务:

    python app.py
  2. 打开浏览器,访问 http://127.0.0.1:5000

  3. 在输入框中输入消息并点击“Send”按钮,就可以看到发送的消息以及后端的响应。

总结

  • 后端使用 Flask 和 Flask-SocketIO 实现 WebSocket 服务,通过监听和发送事件进行通信。
  • 前端使用 HTML 和 JavaScript 创建用户界面,通过 Socket.IO 客户端与后端进行交互。
  • 该示例展示了 WebSocket 的基本用法,可以扩展以实现更复杂的功能,比如用户身份验证、房间功能等。

通过以上简单的示例,你应该快速了解了通过Python搭建 WebSocket 通信的基本框架,后续可以在此基础上进行更深入的开发。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Python实现WebSocket通信的完整例子! - Python技术站

(0)

相关文章

  • Django Redis验证码 密码 session 实例

    1.settings CACHES = { “default”: { “BACKEND”: “django_redis.cache.RedisCache”, “LOCATION”: “redis://192.168.8.102:6379/0”, “OPTIONS”: { “CLIENT_CLASS”: “django_redis.client.Default…

    Django 2023年4月9日
    00
  • [项目布局配置]Nosql与PythonWeb-Flask框架组合

    我来为你详细讲解”项目布局配置:Nosql与PythonWeb-Flask框架组合”的完整攻略。 1. 项目布局配置 在开始项目布局配置之前,需要先确保你已经成功安装Python和Flask框架。项目布局的规划非常重要,下面是一个简单的布局规划: MyWebProject/ ├── app/ │ ├── static/ │ └── templates/ ├─…

    Flask 2023年5月16日
    00
  • Flask模板引擎Jinja2使用实例

    下面是关于“Flask模板引擎Jinja2使用实例”的详细攻略,包含两条示例说明。 简介 Jinja2是Flask框架使用的默认模板引擎,它是一个现代化的,基于模板的多功能工具,可以生成静态文本,XML或其他格式的动态内容。在Flask应用程序中使用Jinja2可以使得我们可以在HTML页面中使用Python语言,显著增强了Web应用的灵活性和可扩展性。 安…

    Flask 2023年5月15日
    00
  • Python+django实现简单的文件上传

    让我来详细讲解一下 Python + Django 实现简单的文件上传的完整攻略,其中包含两条示例说明。 一、背景 文件上传是大多数网站都需要实现的功能,一般可用于用户上传头像、文件等需求,使用 Django 实现文件上传可大大简化开发难度。 二、步骤 1. 在 Django 项目中创建上传文件的目录 首先,在 Django 项目的根目录下创建一个目录用于存…

    Django 2023年5月16日
    00
  • django+Echarts实现数据可视化

    1.实时异步加载(从mysql读取数据)   2.scatter散点图 3.雷达图(参数选择要注意) time_1 time_2 time_3 4.面积图 我上传的源码请到github下载:https://github.com/zdYng/django_web_echarts

    Django 2023年4月13日
    00
  • 详解Flask Sijax(异步请求)使用方法

    Flask Sijax是一个用于Flask的简单Ajax库。它可以帮助您轻松地向服务器发送异步请求,以获取或更新页面上的数据,而无需刷新整个页面。在本文中,我们将提供一个完整的攻略,以帮助您学习如何使用Flask Sijax。 安装和设置 首先,您需要在项目中安装Flask Sijax。您可以使用以下命令在终端中安装它: pip install Flask-…

    Flask 2023年3月13日
    00
  • Django模板层(template)

    1、模板是一个文本,用于分离文档的表现形式和内容。也可以说是:HTML代码+模板语法      简单的例子:使用模板在页面显示“hello word”            在template中新建html文件:hello.html,  在views.py中添加对象,向模板中提交数据。在urls.py中添加url与函数对象的映射关系 <h1>{{…

    Django 2023年4月13日
    00
  • 第五篇Django URL name 详解

    利用Django开发网站,可以设计出非常优美的url规则,如果url的匹配规则(包含正则表达式)组织得比较好,view的结构就会比较清晰,比较容易维护。 Django如何处理一个请求 如果用户请求一个由Django提供服务的站点,它将按照以下逻辑决定执行哪些代码: 通常不考虑中间件的情况下,Django将会确定要使用的根URLconf模块。 Django加载…

    Django 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部