代码地址:https://gitee.com/Brickie_liu/bianlun-vote
辩论投票工具 实现代码讲解
一 事情起源
单位新同学要举办一场辩论活动,工会同事想要一个投票功能,类似奇葩说投影到大屏幕,观众可以通过手机进行观点选择。考虑到还没有见到这一类型的小工具,而且认识一些老师,在班里也会组织这些活动。这种交互式活动会比单纯的辩论更有活力。
二 整理需求
1、辩论双放观众投票信息大屏实时展示。
2、投票方式支持,每人只能投一票不能变更,每人只能投一票但可以变更,每人可以重 复投票。
3、可以增删辩论话题,并统计阶段性票数。
4、使用场景,50-200人会议厅。
三 演示视频:
https://gitee.com/Brickie_liu/bianlun-vote/tree/master/test/vote-1.mp4
https://gitee.com/Brickie_liu/bianlun-vote/tree/master/test/vote-2.mp4
四 方案一(WNMP,PHP,Nginx,Vue)
考虑以上几个功能,想着在没有内网的情况下可放到公网服务器上用,在没有网的情况下可以把WNMP环境打包,尽量精简功能和简单部署。
开发环境
win10 64位
notepad++
WNMP
第三方库
前端:
bootstrap
VUE
后端
PHP websocket( https://github.com/Textalk/websocket-php)
PHP Psr\Log
工程目录结构
│ index.html
│ manage.html
│ readme.txt
│ userListConfg.txt
│ util.php
│ vote.php
│ voteAdmin.html
│ voteConfig.php
│ voteOpt.php
├─lib
│ ├─Psr
│ │ └─Log
│ └─WebSocket
│ BadOpcodeException.php
│ BadUriException.php
│ Base.php
│ Client.php
│ ConnectionException.php
│ Exception.php
│ Server.php
│ TimeoutException.php
├─res
└─sh
voteStartAll.php
voteStopAll.php
存在的问题
1、由于当时想着在公网服务器上部署,就是专业人部署仍然需要配置很多系统配置,很繁琐。
2、本地环境部署有点难,不是傻瓜式的。普通人不会用啊。做不到点击运行。
五 方案二(python,tk)
针对方案一的问题,用python实现,集成web服务。打包成exe,安装运行。
不在考虑支撑公网服务器上部署,只支撑本地,50-200人会议厅【一台电脑,一台支持3000M的WIFI6 路由器】华为的理论支持128终端。
开发环境
win10 64位
winrar
anaconde3 py39,
pycharm 2021.2
第三方库
前端
WEB bootstrap
WEB VUE
GUI tkinter
后端
psutil,获取系统本地信息
gevent,websocket服务
gevent-websocket,websocket服务
pyinstaller,生成exe打包
bottle,只有一个文件的web服务框架,遵循 WSGI,几乎支撑所有常用的功能。个人开发小型WEB推荐。
工程目录结构
│ build-winrar-conf.ini
│ build.bat
│ build.ps1
│ README.md
│ requirements.txt
│ voteMain.py
│
├─app-dist
│ voteMain.exe
│ voteMain.rar
│
├─src
│ app_gui.py
│ app_http.py
│ bottle.py
│ http_server.py
│ util.py
│
├─tool
│ │ upx-3.95-win64.zip
│ └─upx-3.95-win64
│ upx.exe
│
└─www
│ 404.html
│ manage.html
│ vote_client.html
│
└─res
编译
1、二次打包工具winrar
,安装路径"C:\Program Files\WinRAR\WinRAR.exe",如不是请修改build.bat
中winrar
参数。
2、win10:打开anaconda prompt
终端执行build.bat
,在app-dist
目录下生成exe
,rar
以及源数据目录voteMain
。
3、build.ps1
是powershell
环境下的执行脚本,没有测试过。
场景部署
本地,50-200人会议厅【一台电脑,一台支持3000M的WIFI6 路由器】华为的理论支持128终端。
部署方案一:100人以下
需要硬件设备:电脑一台,路由器一台
部署方案二:当人数校多时100人以上时,使用2-3个WIFI6,做一个简单本地组网。
需要硬件设备:电脑一台,路由器2-3台
安装运行
1、使用rar
解压安装,生成源文件目录,进入找到voteMain.exe
并运行。
2、使用exe
安装,生成源文件目录,并在桌面生成快捷方式,双击运行。
3、cmd 运行参数
Usage: voteMain.exe [options]
Options:
-h, --help show this help message and exit
-p PORT, --port=PORT 指定web服务端口,默认值【8080】
--gui GUI运行,默认值【True】
存在的问
无