分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

web聊天室(Tornado-WebSocket实现)

发布时间:2023-09-06 02:09责任编辑:郭大石关键词:Web
 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 ????<meta charset="UTF-8"> 5 ????<title>Title</title> 6 </head> 7 <body> 8 <div id="contents" style="height:500px;overflow:auto;background-color: darkgray;"></div> 9 <div>10 ????<textarea id="msg"></textarea>11 ????<input type="button" value="发送" onclick="sendmsg()">12 </div>13 </body>14 <script>15 ????var ws = new WebSocket("ws://"+location.host+"/chat");16 ????var contents = document.getElementById("contents");17 ????var msg = document.getElementById("msg");18 ????ws.onmessage = function (e) {19 ????????var msg1 = "<p>"+e.data+"</p>";20 ????????contents.innerHTML+=msg1;21 ????}22 ????function sendmsg() {23 ????????ws.send(msg.value);24 ????????msg.value = "";25 ????}26 </script>27 </html>
chat.html
 1 # coding:utf-8 2 ?3 import tornado.web 4 import tornado.ioloop 5 import tornado.httpserver 6 import tornado.options 7 import os 8 import datetime 9 10 from tornado.web import RequestHandler11 from tornado.options import define, options12 from tornado.websocket import WebSocketHandler13 14 define("port", default=8000, type=int)15 16 class IndexHandler(RequestHandler):17 ????def get(self):18 ????????self.render("chat.html")19 20 class ChatHandler(WebSocketHandler):21 22 ????users = set() ?# 用来存放在线用户的容器23 24 ????def open(self):25 ????????self.users.add(self) ?# 建立连接后添加用户到容器中26 ????????for u in self.users: ?# 向已在线用户发送消息27 ????????????u.write_message(u"[%s]-[%s]-进入聊天室" % (self.request.remote_ip, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")))28 29 ????def on_message(self, message):30 ????????for u in self.users: ?# 向在线用户广播消息31 ????????????u.write_message(u"[%s]-[%s]-说:%s" % (self.request.remote_ip, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), message))32 33 ????def on_close(self):34 ????????self.users.remove(self) # 用户关闭连接后从容器中移除用户35 ????????for u in self.users:36 ????????????u.write_message(u"[%s]-[%s]-离开聊天室" % (self.request.remote_ip, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")))37 38 ????def check_origin(self, origin):39 ????????return True ?# 允许WebSocket的跨域请求40 41 if __name__ == ‘__main__‘:42 ????tornado.options.parse_command_line()43 ????app = tornado.web.Application([44 ????????????(r"/", IndexHandler),45 ????????????(r"/chat", ChatHandler),46 ????????],47 ????????#static_path = os.path.join(os.path.dirname(__file__), "static"),48 ????????#template_path = os.path.join(os.path.dirname(__file__), "template"),49 ????????debug = True50 ????????)51 ????http_server = tornado.httpserver.HTTPServer(app)52 ????http_server.listen(options.port,address="0.0.0.0")53 ????tornado.ioloop.IOLoop.current().start()
chat.py

web聊天室(Tornado-WebSocket实现)

原文地址:https://www.cnblogs.com/cx59244405/p/9447805.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved