Skip to content

hduzn/msg_interaction

Repository files navigation

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。

# MQTT broker 配置
mqtt_account = {
    'MQTT_BROKER':"192.168.31.181",
    'MQTT_PORT':8083
}

所以你需要有MQTT的服务器,我这用的是EMQX的,用Docker直接部署了一个在局域网环境就可以用。

如果没有的用EXMQ等一些提交的公共的也可以。

About

基于Flask框架使用MQTT进行消息互动

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published