Python用tornado的websocket开发聊天室
用tornado开发基于异步websocket聊天室-demo
开发环境:IDE(vscode);python(3.8至3.10都行);数据库(mysql)。
项目类型:DEMO(简单的测试项目,用于基础学习)
项目说明:这是参照网上的视频和相关书籍,自己仿照着写的,前段html文件的排版,几乎没有,demo而已,不要见外。通过用户登录,进入聊天室,然后可以实现多用户同时在线聊天。
目录结构
app
/application.py
/views.py
static
/css
/chat.css
/images
/js
/jquery.js
/server.js
templates
/chat.html
/login.html
venv
main.py
Python包
执行pip list可以查看现有安装的包。
aiomysql 0.0.22
autopep8 1.6.0
pip 21.2.4
pycodestyle 2.8.0
PyMySQL 0.9.3
setuptools 58.1.0
toml 0.10.2
tornado 6.1
main.py
import tornado.httpserverimport tornado.ioloopimport tornado.optionsfrom tornado.options import define, optionsfrom app.application import applicationimport osdefine("port", default=8080, help="run on the given port", type=int)def main(): tornado.options.parse_command_line() app = application() http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.current().start()if __name__ == "__main__": main()
app/application.py
import tornado
import os
from app.views import MainHandler, LoginHandler, ChatHandler
def application():
return tornado.web.Application(handlers=[
(r'/', MainHandler),
(r'/login/', LoginHandler),
(r'/chat/', ChatHandler),
],
template_path=os.path.join(os.path.abspath(
os.path.dirname(os.path.dirname(__file__))), 'templates'),
static_path=os.path.join(os.path.abspath(
os.path.dirname(os.path.dirname(__file__))), 'static'),
)
app/views.py
from re import I
from tornado.web import RequestHandler
from tornado.websocket import WebSocketHandler
import aiomysql
class MainHandler(RequestHandler):
def get(self):
self.write('get')
# get方法一般用于查询
def post(self):
self.write('post')
# post方法一般用于新增数据
def delete(self):
self.write('delete')
# delete方法一般用于删除数据
def put(self):
self.write('put')
# put方法一般用于数据的批量修改
def patch(self):
self.write('patch')
# patch方法一般用于单个或者局部数据的修改
class LoginHandler(RequestHandler):
def get(self):
self.render(