# msg_interaction **Repository Path**: hduzn/msg_interaction ## Basic Information - **Project Name**: msg_interaction - **Description**: 基于Flask框架使用MQTT进行消息互动 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 3 - **Created**: 2023-02-19 - **Last Updated**: 2025-03-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # msg_interaction 基于Flask框架使用MQTT进行消息互动 ## 【需求】: 在机房中,局域网环境下,学生与教师可以简单的在一个web页面中进行消息互动。 因为使用的联想云教室和极域电子教室都是可以接收学生端消息,但不能单独进行回复,所以自己试了下写了个小工具。 正好前段时间在弄物联网,使用MQTT这个消息队列,感觉传递消息很方便。既可以上传消息,也可以同时订阅消息接收服务端发过来的消息。 ## 【实现功能】: 可以多个机房同时使用。 注:以下`127.0.0.1`的ip换成自己服务器在的ip就行。 比如room1教室,学生打开用户页面`127.0.0.1/room1`,用座位号进行登录(方便识别是哪个学生),然后就可以发送消息给教师; 教师登录管理页面`127.0.0.1/admin/room1`,room1的管理台后,可以接收消息,回复指定座位号的学生消息。 ## 【实现过程】: 基于Flask(Python web框架),用Flask的web服务器。 一共3个页面: - 一个每个room的登录页面 login.html - 一个学生用户页 message.html - 一个教师管理后台页面 admin.html ### 1.room登录页 login.html 比如通过:`http://127.0.0.1:5012/room1` 访问room1的登录页面 ### 2.前端用户页 message.html 学生通过login.html 输入座位号登录。 在学生使用的用户页面上,用javascript 使用MQTT,发送消息; 同时在MQTT成功连接后开始订阅是否有教师端发过来的消息。 比如:输入座位号1登录后的页面是:`http://127.0.0.1:5012/user/room1/1` ### 3.管理后台页 admin.html 在管理页面上,也是一样用用javascript 使用MQTT,在MQTT连接成功后开始订阅消息,当接收到消息之后显示出来。 然后当回复消息发送后,把消息发送去学生用户页面上,同时在管理页面上显示历史消息记录。 比如:room1的管理页面是:`http://127.0.0.1:5012/admin/room1` ### 4.MQTT服务器 在app.py中配置了MQTT broker。 ```python # MQTT broker 配置 mqtt_account = { 'MQTT_BROKER':"192.168.31.181", 'MQTT_PORT':8083 } ``` 所以你需要有MQTT的服务器,我这用的是EMQX的,用Docker直接部署了一个在局域网环境就可以用。 如果没有的用EXMQ等一些提交的公共的也可以。 ## 演示图 ![输入图片说明](%E5%9F%BA%E4%BA%8EFlask%E6%A1%86%E6%9E%B6%E4%BD%BF%E7%94%A8MQTT%E8%BF%9B%E8%A1%8C%E6%B6%88%E6%81%AF%E4%BA%92%E5%8A%A8-%E6%BC%94%E7%A4%BA.png) ## 视频演示 [视频演示](https://www.bilibili.com/video/BV1vs4y187S9/)