Skip to content

Instantly share code, notes, and snippets.

@sat0b
Created June 3, 2017 18:14
Show Gist options
  • Select an option

  • Save sat0b/e12577a41de3edebe8ac06bf3a4a2401 to your computer and use it in GitHub Desktop.

Select an option

Save sat0b/e12577a41de3edebe8ac06bf3a4a2401 to your computer and use it in GitHub Desktop.
one line chat
<!DOCTYPE html>
<html>
<head>
<title>One line chat</title>
</head>
<body>
<script>
document.addEventListener('DOMContentLoaded', function() {
var ws = new WebSocket("ws://" + location.host + "/ws");
var msg = document.getElementById('msg');
var submit = document.getElementById('submit');
submit.addEventListener('click', function(event) {
ws.send(msg.value);
msg.value = '';
});
var msgs = document.getElementById('msgs');
ws.onmessage = function(event) {
console.log(event.data);
if (msgs.innerHTML.length == 0)
msgs.innerHTML += event.data;
else
msgs.innerHTML += "<br/>" + event.data;
};
});
</script>
<div id="msgs"></div>
<hr/>
<div>
<input type="textbox" id="msg">
<button type="button" id="submit">submit</button>
</div>
</body>
</html>
import tornado.web
import tornado.websocket
import tornado.httpserver
import tornado.ioloop
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
class SocketHandler(tornado.websocket.WebSocketHandler):
users = set()
def open(self):
self.users.add(self)
def on_message(self, message):
for user in self.users:
user.write_message(message)
def on_close(self):
self.users.remove(self)
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", IndexHandler),
(r"/ws", SocketHandler),
], debug=True)
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8888)
tornado.ioloop.IOLoop.current().start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment