I started with the following base code that works (Like the sample code at http://aaugustin.github.io/websockets/):
import asyncio
import websockets
@asyncio.coroutine
def servePlayer(websocket, path):
yield from websocket.send("Hello World")
start_server = websockets.serve(servePlayer, 'localhost', 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
I modified this a bit to something similar but which no longer works. I don't know why. Here's the modified version:
import asyncio
import websockets
class Player:
def __init__(self, connection):
self.connection = connection
def send(self, data):
print("sending")
yield from self.connection.send(data)
@asyncio.coroutine
def servePlayer(websocket, path):
player = Player(websocket)
player.send("Hello World")
start_server = websockets.serve(servePlayer, 'localhost', 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
The code does not even reach the "sending" line.
Your player.send()
method is a generator too; you need to delegate to that generator:
@asyncio.coroutine
def servePlayer(websocket, path):
player = Player(websocket)
yield from player.send("Hello World")