基于websocket的简易聊天室
2019-08-22 09:07 美丽的名字 阅读(114) 评论(0) 收藏 举报服务端:
#!usr/bin/env python #-*- coding:utf-8 _*- import tornado.web import tornado.websocket import tornado.ioloop import tornado.autoreload class IndexHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): self.render('index.html') users = set() class ChatHandler(tornado.websocket.WebSocketHandler): def open(self, *args: str, **kwargs: str): users.add(self) def on_message(self, message): print(message) content = self.render_string('message.html', msg=message) for user in users: user.write_message(content) def run(): settings = { 'template_path': '../templates', 'static_path': '../static', 'debug': True, } application = tornado.web.Application([ (r"/", IndexHandler), (r"/chat", ChatHandler), ], **settings) application.listen(8000) instance = tornado.ioloop.IOLoop.instance() tornado.autoreload.start(instance) instance.start() if __name__ == '__main__': run()
web端:
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>chatroom</title> <style> .container{ border: 2px solid #dddddd; height: 400px; overflow: auto; } </style> </head> <body> <div style="width: 750px;margin: 0 auto;"> <h1>chatroom</h1> <div class="container"></div> <div class="input"> <input type="text" id="txt"> <input type="button" value="发送" id="btn" onclick="sendMessage();"> </div> </div> <script src="../static/jquery-3.4.1.js"></script> <script> ws = new WebSocket('ws://127.0.0.1:8000/chat'); function sendMessage() { ws.send($('#txt').val()); } ws.onmessage = function (event) { $('.container').append(event.data); } </script> </body> </html>
message.html
<div style="margin: 20px; background-color: cyan">{{msg}}</div>
浙公网安备 33010602011771号