| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- """
- handlers.py - 用户登录和聊天的处理器
- """
- import tornado.web
- import tornado.websocket
- nicknames = set()
- connections = {}
- class LoginHandler(tornado.web.RequestHandler):
- def get(self):
- self.render('login.html', hint='')
- def post(self):
- nickname = self.get_argument('nickname')
- if nickname in nicknames:
- self.render('login.html', hint='昵称已被使用,请更换昵称')
- self.set_secure_cookie('nickname', nickname)
- self.render('chat.html')
- class ChatHandler(tornado.websocket.WebSocketHandler):
- def open(self):
- nickname = self.get_secure_cookie('nickname').decode()
- nicknames.add(nickname)
- for conn in connections.values():
- conn.write_message(f'~~~{nickname}进入了聊天室~~~')
- connections[nickname] = self
- def on_message(self, message):
- nickname = self.get_secure_cookie('nickname').decode()
- for conn in connections.values():
- if conn is not self:
- conn.write_message(f'{nickname}说:{message}')
- def on_close(self):
- nickname = self.get_secure_cookie('nickname').decode()
- del connections[nickname]
- nicknames.remove(nickname)
- for conn in connections.values():
- conn.write_message(f'~~~{nickname}离开了聊天室~~~')
|