2015-05-16 1 views
0

Я начал со следующим базовым кодом, который работает (как пример кода на http://aaugustin.github.io/websockets/):Почему эта программа Python с использованием урона от работы не работает?

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() 

Я модифицированном это немного, чтобы нечто подобное, но которые больше не работает. Я не знаю почему. Вот модифицированная версия:

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() 

Код даже не доходит до строки «отправки».

ответ

2

Ваш метод player.send() также является генератором; вам необходимо передать этот генератор:

@asyncio.coroutine 
def servePlayer(websocket, path): 
    player = Player(websocket) 
    yield from player.send("Hello World") 
Смежные вопросы