import
logging
import
os.path
import
uuid
import
tornado.httpserver
import
tornado.ioloop
import
tornado.options
import
tornado.web
import
tornado.websocket
def send_message(message):
for
handler
in
ChatSocketHandler.socket_handlers:
try
:
handler.write_message(message)
except:
logging.error(
'Error sending message'
, exc_info=True)
class
MainHandler(tornado.web.RequestHandler):
def
get
(self):
self.render(
'index.html'
)
class
ChatSocketHandler(tornado.websocket.WebSocketHandler):
socket_handlers =
set
()
def open(self):
ChatSocketHandler.socket_handlers.add(self)
send_message(
'A new user has entered the chat room.'
)
def on_close(self):
ChatSocketHandler.socket_handlers.remove(self)
send_message(
'A user has left the chat room.'
)
def on_message(self, message):
send_message(message)
def main():
settings = {
'template_path'
: os.path.join(os.path.dirname(__file__),
'templates'
),
'static_path'
: os.path.join(os.path.dirname(__file__),
'static'
)
}
application = tornado.web.Application([
(
'/'
, MainHandler),
(
'/new-msg/'
, ChatHandler),
(
'/new-msg/socket'
, ChatSocketHandler)
], **settings)
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(
8000
)
tornado.ioloop.IOLoop.instance().start()
if
__name__ ==
'__main__'
:
main()
网友评论