Skip to content

Commit

Permalink
restructured the app
Browse files Browse the repository at this point in the history
  • Loading branch information
masnun committed Feb 10, 2013
1 parent c32423d commit 72bc943
Show file tree
Hide file tree
Showing 11 changed files with 88 additions and 36 deletions.
2 changes: 2 additions & 0 deletions .gitignore
@@ -0,0 +1,2 @@
.idea
*.pyc
1 change: 1 addition & 0 deletions core/__init__.py
@@ -0,0 +1 @@
__author__ = 'masnun'
13 changes: 13 additions & 0 deletions core/handlers.py
@@ -0,0 +1,13 @@
from tornado.web import RequestHandler
from tornado.template import Loader
from settings import TEMPLATE_PATH

class WebRequestHandler(RequestHandler):
def initialize(self):
self.template_path = TEMPLATE_PATH
#print TEMPLATE_PATH

def render(self, template_name, params=None):
loader = Loader(self.template_path)
html = loader.load(template_name).generate(**params)
self.write(html)
1 change: 1 addition & 0 deletions core/socket_storage.py
@@ -0,0 +1 @@
SOCKETS = []
62 changes: 28 additions & 34 deletions server.py
@@ -1,39 +1,33 @@
# Add to path
import sys
import os

sys.path.append(os.path.dirname(os.path.abspath(__file__)))


# Bootstrap the app
import tornado.ioloop
import tornado.web
from tornado import websocket

GLOBALS={
'sockets': []
}

class MainHandler(tornado.web.RequestHandler):
def get(self):
#self.write("STATUS: Server running")
html = open("chat.html","r")
self.write(html.read())

class ClientSocket(websocket.WebSocketHandler):
def open(self):
GLOBALS['sockets'].append(self)
print "WebSocket opened"

def on_close(self):
print "WebSocket closed"
GLOBALS['sockets'].remove(self)

class Announcer(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
data = self.get_argument('data')
for socket in GLOBALS['sockets']:
socket.write_message(data)
self.write('Posted')

application = tornado.web.Application([
(r"/", MainHandler),
(r"/socket", ClientSocket),
(r"/push", Announcer),
])
import tornado.autoreload
import datetime
from urls import urlpatterns


# Server Auto Reload Hook

def auto_reload_hook():
print "Server is starting: " + str(datetime.datetime.now())


application = tornado.web.Application(urlpatterns)
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
tornado.autoreload.add_reload_hook(auto_reload_hook)
tornado.autoreload.start()
print "Server is starting: " + str(datetime.datetime.now())
try:
tornado.ioloop.IOLoop.instance().start()
except KeyboardInterrupt:
print ""
print "Quitting"
sys.exit(0)
3 changes: 3 additions & 0 deletions settings.py
@@ -0,0 +1,3 @@
import os

TEMPLATE_PATH = os.path.dirname(os.path.abspath(__file__)) + "/templates/"
4 changes: 2 additions & 2 deletions chat.html → templates/chat.html
Expand Up @@ -5,7 +5,7 @@

<script type="text/javascript">
$(document).ready(function () {
var ws = new WebSocket("ws://localhost:8888/socket");
var ws = new WebSocket("ws://{{ host }}/socket");
ws.onmessage = function(event) {
$('textarea#chat').append( event.data +'\n');
}
Expand All @@ -17,7 +17,7 @@
var data = $("#name").val() + ": " + $("#message").val()

$.ajax({
url: 'http://localhost:8888/push',
url: 'http://{{ host }}/push',
data: {
data: data
},
Expand Down
9 changes: 9 additions & 0 deletions urls.py
@@ -0,0 +1,9 @@
from views.web import *
from views.socket import *


urlpatterns = [
(r"/", FrontPage),
(r"/socket", ClientSocket),
(r"/push", Pusher),
]
1 change: 1 addition & 0 deletions views/__init__.py
@@ -0,0 +1 @@
__author__ = 'masnun'
13 changes: 13 additions & 0 deletions views/socket.py
@@ -0,0 +1,13 @@
from tornado.websocket import WebSocketHandler
from core.socket_storage import SOCKETS

class ClientSocket(WebSocketHandler):
def open(self):
SOCKETS.append(self)
print "WebSocket opened"

def on_close(self):
print "WebSocket closed"
SOCKETS.remove(self)


15 changes: 15 additions & 0 deletions views/web.py
@@ -0,0 +1,15 @@
from core.handlers import WebRequestHandler
from core.socket_storage import SOCKETS


class FrontPage(WebRequestHandler):
def get(self):
self.render('chat.html', {'host': self.request.host})


class Pusher(WebRequestHandler):
def get(self, *args, **kwargs):
data = self.get_argument('data')
for socket in SOCKETS:
socket.write_message(data)
self.write('Posted')

0 comments on commit 72bc943

Please sign in to comment.