diff --git a/examples/sanic/README.rst b/examples/sanic/README.rst
deleted file mode 100644
index 53b4160..0000000
--- a/examples/sanic/README.rst
+++ /dev/null
@@ -1,42 +0,0 @@
-Socket.IO sanic Examples
-========================
-
-This directory contains example Socket.IO applications that are compatible with
-asyncio and the sanic framework. These applications require Python 3.5 or
-later.
-
-Note that Sanic versions older than 0.4.0 do not support the WebSocket
-protocol, so on those versions the only available transport is long-polling.
-
-app.py
-------
-
-A basic "kitchen sink" type application that allows the user to experiment
-with most of the available features of the Socket.IO server.
-
-latency.py
-----------
-
-A port of the latency application included in the official Engine.IO
-Javascript server. In this application the client sends *ping* messages to
-the server, which are responded by the server with a *pong*. The client
-measures the time it takes for each of these exchanges and plots these in real
-time to the page.
-
-This is an ideal application to measure the performance of the different
-asynchronous modes supported by the Socket.IO server.
-
-Running the Examples
---------------------
-
-To run these examples, create a virtual environment, install the requirements
-and then run::
-
- $ python app.py
-
-or::
-
- $ python latency.py
-
-You can then access the application from your web browser at
-``http://localhost:8000``.
diff --git a/examples/sanic/app.html b/examples/sanic/app.html
deleted file mode 100755
index 1668814..0000000
--- a/examples/sanic/app.html
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
- Flask-SocketIO Test
-
-
-
-
-
- Flask-SocketIO Test
- Send:
-
-
-
-
-
-
-
- Receive:
-
-
-
diff --git a/examples/sanic/app.py b/examples/sanic/app.py
old mode 100755
new mode 100644
index 8eeb689..e1bb6e7
--- a/examples/sanic/app.py
+++ b/examples/sanic/app.py
@@ -1,93 +1,43 @@
-import asyncio
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+@author: xuyaoqiang
+@contact: xuyaoqiang@gmail.com
+@date: 2017-07-28 15:29
+@version: 0.0.0
+@license:
+@copyright:
+
+"""
from sanic import Sanic
-from sanic.response import html
-
+from sanic.response import html
import socketio
+
sio = socketio.AsyncServer(async_mode='sanic')
app = Sanic()
sio.attach(app)
-async def background_task():
- """Example of how to send server generated events to clients."""
- count = 0
- while True:
- await sio.sleep(10)
- count += 1
- await sio.emit('my response', {'data': 'Server generated event'},
- namespace='/test')
+class TestNamespace(socketio.AsyncNamespace):
+ def on_connect(self, sid, environ):
+ pass
-@app.listener('before_server_start')
-def before_server_start(sanic, loop):
- sio.start_background_task(background_task)
+ def on_disconnect(self, sid):
+ pass
@app.route('/')
async def index(request):
- with open('app.html') as f:
+ with open('index.html') as f:
return html(f.read())
-@sio.on('my event', namespace='/test')
-async def test_message(sid, message):
- await sio.emit('my response', {'data': message['data']}, room=sid,
- namespace='/test')
-
-
-@sio.on('my broadcast event', namespace='/test')
-async def test_broadcast_message(sid, message):
- await sio.emit('my response', {'data': message['data']}, namespace='/test')
-
-
-@sio.on('join', namespace='/test')
-async def join(sid, message):
- sio.enter_room(sid, message['room'], namespace='/test')
- await sio.emit('my response', {'data': 'Entered room: ' + message['room']},
- room=sid, namespace='/test')
-
-
-@sio.on('leave', namespace='/test')
-async def leave(sid, message):
- sio.leave_room(sid, message['room'], namespace='/test')
- await sio.emit('my response', {'data': 'Left room: ' + message['room']},
- room=sid, namespace='/test')
-
-
-@sio.on('close room', namespace='/test')
-async def close(sid, message):
- await sio.emit('my response',
- {'data': 'Room ' + message['room'] + ' is closing.'},
- room=message['room'], namespace='/test')
- await sio.close_room(message['room'], namespace='/test')
-
-
-@sio.on('my room event', namespace='/test')
-async def send_room_message(sid, message):
- await sio.emit('my response', {'data': message['data']},
- room=message['room'], namespace='/test')
-
-
-@sio.on('disconnect request', namespace='/test')
-async def disconnect_request(sid):
- await sio.disconnect(sid, namespace='/test')
-
-
-@sio.on('connect', namespace='/test')
-async def test_connect(sid, environ):
- await sio.emit('my response', {'data': 'Connected', 'count': 0}, room=sid,
- namespace='/test')
-
-
-@sio.on('disconnect', namespace='/test')
-def test_disconnect(sid):
- print('Client disconnected')
-
-
-app.static('/static', './static')
+sio.register_namespace(TestNamespace('/test'))
if __name__ == '__main__':
- app.run()
+ app.run(port=8001, debug=True)
+
diff --git a/examples/sanic/index.html b/examples/sanic/index.html
new file mode 100644
index 0000000..58a682e
--- /dev/null
+++ b/examples/sanic/index.html
@@ -0,0 +1,7 @@
+
+
+
diff --git a/examples/sanic/latency.html b/examples/sanic/latency.html
deleted file mode 100755
index 769e9ef..0000000
--- a/examples/sanic/latency.html
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
- Socket.IO Latency
-
-
-
- Socket.IO Latency
- (connecting)
-
-
-
-
-
-
-
-
diff --git a/examples/sanic/latency.py b/examples/sanic/latency.py
deleted file mode 100755
index 2e1712f..0000000
--- a/examples/sanic/latency.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from sanic import Sanic
-from sanic.response import html
-
-import socketio
-
-sio = socketio.AsyncServer(async_mode='sanic')
-app = Sanic()
-sio.attach(app)
-
-
-@app.route('/')
-def index(request):
- with open('latency.html') as f:
- return html(f.read())
-
-
-@sio.on('ping_from_client')
-async def ping(sid):
- await sio.emit('pong_from_server', room=sid)
-
-app.static('/static', './static')
-
-
-if __name__ == '__main__':
- app.run()
diff --git a/examples/sanic/static/style.css b/examples/sanic/static/style.css
deleted file mode 100644
index d20bcad..0000000
--- a/examples/sanic/static/style.css
+++ /dev/null
@@ -1,4 +0,0 @@
-body { margin: 0; padding: 0; font-family: Helvetica Neue; }
-h1 { margin: 100px 100px 10px; }
-h2 { color: #999; margin: 0 100px 30px; font-weight: normal; }
-#latency { color: red; }
diff --git a/socketio/packet.py b/socketio/packet.py
index 570708b..753bd88 100644
--- a/socketio/packet.py
+++ b/socketio/packet.py
@@ -1,5 +1,9 @@
import functools
import json as _json
+try:
+ from urllib.parse import urlparse
+except ImportError:
+ from urlparse import urlparse
import six
@@ -87,7 +91,7 @@ class Packet(object):
ep = ''
self.namespace = None
self.data = None
- ep = ep[1:]
+ ep = urlparse(ep[1:]).path
dash = (ep + '-').find('-')
attachment_count = 0
if ep[0:dash].isdigit():