diff --git a/tictactoe/apps/core/urls.py b/tictactoe/apps/core/urls.py index 7b4d10b..d62a8fb 100644 --- a/tictactoe/apps/core/urls.py +++ b/tictactoe/apps/core/urls.py @@ -1,11 +1,12 @@ from django.conf.urls.defaults import patterns, include, url from django.contrib.auth.decorators import login_required +import socketio.sdjango + from core.views import (game_list, create_computer_game, view_game, create_move, - accept_invite, - socketio, + accept_invite ) urlpatterns = patterns('core.views', @@ -41,7 +42,7 @@ ), url( regex=r'^socket\.io', - view=socketio + view=include(socketio.sdjango.urls) ), ) diff --git a/tictactoe/apps/core/views.py b/tictactoe/apps/core/views.py index 70e44fd..6b4fdbb 100644 --- a/tictactoe/apps/core/views.py +++ b/tictactoe/apps/core/views.py @@ -19,10 +19,11 @@ from gevent.greenlet import Greenlet from socketio.namespace import BaseNamespace -from socketio import socketio_manage +from socketio.sdjango import namespace REDIS_HOST = getattr(settings, 'REDIS_HOST', 'localhost') +@namespace('/game') class GameNamespace(BaseNamespace): def listener(self, chan): red = redis.StrictRedis(REDIS_HOST) @@ -33,7 +34,7 @@ def listener(self, chan): while True: for i in red.listen(): - self.send({'message': i}, json=True) + self.emit('message', i) def recv_message(self, message): action, pk = message.split(':') @@ -41,15 +42,6 @@ def recv_message(self, message): if action == 'subscribe': Greenlet.spawn(self.listener, pk) -def socketio(request): - socketio_manage(request.environ, - { - '': GameNamespace, - }, request=request - ) - - return HttpResponse() - @login_required def create_move(request, game_id): diff --git a/tictactoe/pip_requirements.txt b/tictactoe/pip_requirements.txt index 6e8e7df..c628ee3 100644 --- a/tictactoe/pip_requirements.txt +++ b/tictactoe/pip_requirements.txt @@ -3,5 +3,5 @@ django-registration gevent redis simplejson --e git+git@github.com:sontek/gevent-socketio.git#egg=gevent_socketio --e git+git@github.com:abourget/gevent-websocket.git#egg=gevent_websocket +-e git+git://github.com/abourget/gevent-socketio.git +-e git+git://github.com/abourget/gevent-websocket.git \ No newline at end of file diff --git a/tictactoe/static/messages.js b/tictactoe/static/messages.js index a97a6d7..dd2e515 100644 --- a/tictactoe/static/messages.js +++ b/tictactoe/static/messages.js @@ -6,12 +6,12 @@ if ($("#notifications").text().trim() == "") { $("#notifications").hide(); } -socket = io.connect(); +socket = io.connect("/game"); socket.on("message", function(obj){ - if (obj.message.type == "message") { - var data = eval(obj.message.data); - + if (obj.type == "message") { + var data = eval(obj.data); + if (data[0] == "new_invite") { SetNotificationMessage("You have a new game invite from " + data[1] + "Accept?"); }