0

動作する次の基本コードから始めました ( 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()

これを似たようなものに少し変更しましたが、機能しなくなりました。どうしてか分かりません。変更されたバージョンは次のとおりです。

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

コードは「送信」行にも到達しません。

4

1 に答える 1

2

あなたのplayer.send()メソッドもジェネレーターです。そのジェネレーターに委譲する必要があります。

@asyncio.coroutine
def servePlayer(websocket, path):
    player = Player(websocket)
    yield from player.send("Hello World")
于 2015-05-16T19:40:46.263 に答える