基于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
比如通过:http://127.0.0.1:5012/room1 访问room1的登录页面
学生通过login.html 输入座位号登录。
在学生使用的用户页面上,用javascript 使用MQTT,发送消息;
同时在MQTT成功连接后开始订阅是否有教师端发过来的消息。
比如:输入座位号1登录后的页面是:http://127.0.0.1:5012/user/room1/1
在管理页面上,也是一样用用javascript 使用MQTT,在MQTT连接成功后开始订阅消息,当接收到消息之后显示出来。
然后当回复消息发送后,把消息发送去学生用户页面上,同时在管理页面上显示历史消息记录。
比如:room1的管理页面是:http://127.0.0.1:5012/admin/room1
在app.py中配置了MQTT broker。
# MQTT broker 配置
mqtt_account = {
'MQTT_BROKER':"192.168.31.181",
'MQTT_PORT':8083
}所以你需要有MQTT的服务器,我这用的是EMQX的,用Docker直接部署了一个在局域网环境就可以用。
如果没有的用EXMQ等一些提交的公共的也可以。