Skip to content

Instantly share code, notes, and snippets.

@lanius
Created May 6, 2012 03:51
Show Gist options
  • Save lanius/2610158 to your computer and use it in GitHub Desktop.
Save lanius/2610158 to your computer and use it in GitHub Desktop.
Handle URL pattern in WebSocketHandler for Tornado
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tornado WebSocket Sample</title>
</head>
<body>
<input type="text" id="username" value="myname" />
<button id="connect">connect</button>
<div id="result"></div>
<script>
var $ = function (id) {
return document.getElementById(id);
};
$('connect').addEventListener('click', function () {
var username = $('username').value;
$('username').value = "";
var sock = new WebSocket('ws://localhost:8888/user/' + username);
sock.onopen = function () {
console.log('opened.');
};
sock.onclose = function () {
console.log('closed.');
};
sock.onerror = function () {
console.log('error.');
};
sock.onmessage = function (evt) {
$('result').innerText = evt.data;
};
});
</script>
</body>
</html>
# -*- coding: utf-8 -*-
from tornado.web import RequestHandler, Application
from tornado.websocket import WebSocketHandler
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
class IndexHandler(RequestHandler):
def get(self):
self.render('index.html')
class SampleWebSocket(WebSocketHandler):
def open(self, username):
print(u"opened.")
self.write_message(u"you're name is {0}".format(username))
# You can also get arguments from 'self.open_args'
self.close()
def on_message(self, message):
pass
def on_close(self):
print(u"closed.")
settings = {'auto_reload': True, 'debug': True}
app = Application([
(r'/', IndexHandler),
(r'/user/(.*)', SampleWebSocket),
], **settings)
def main():
http_server = HTTPServer(app)
http_server.listen(8888)
IOLoop.instance().start()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment