Skip to content

Commit 0d63f7a

Browse files
committed
Fix websocket example
1 parent c3f2c4b commit 0d63f7a

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

aiohttp/web.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1471,8 +1471,6 @@ def cleanup():
14711471
for transport in self._connections.values():
14721472
transport.close()
14731473

1474-
yield from asyncio.sleep(0, loop=self._loop)
1475-
14761474
self._connections.clear()
14771475

14781476
def __call__(self):

examples/web_ws.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ def wshandler(request):
3232
if ws is not resp:
3333
ws.send_str(msg)
3434
except WebSocketDisconnectedError:
35+
if resp not in request.app['sockets']:
36+
return resp
3537
request.app['sockets'].remove(resp)
3638
print('Someone disconnected.')
3739
for ws in request.app['sockets']:
@@ -48,11 +50,23 @@ def init(loop):
4850
handler = app.make_handler()
4951
srv = yield from loop.create_server(handler, '127.0.0.1', 8080)
5052
print("Server started at http://127.0.0.1:8080")
51-
return srv, handler
53+
return app, srv, handler
54+
55+
56+
@asyncio.coroutine
57+
def finish(app, srv, handler):
58+
for ws in app['sockets']:
59+
ws.close()
60+
app['sockets'].clear()
61+
yield from asyncio.sleep(0.1)
62+
srv.close()
63+
yield from handler.finish_connections()
64+
yield from srv.wait_closed()
65+
5266

5367
loop = asyncio.get_event_loop()
54-
srv, handler = loop.run_until_complete(init(loop))
68+
app, srv, handler = loop.run_until_complete(init(loop))
5569
try:
5670
loop.run_forever()
5771
except KeyboardInterrupt:
58-
loop.run_until_complete(handler.finish_connections())
72+
loop.run_until_complete(finish(app, srv, handler))

0 commit comments

Comments
 (0)