class TestAsyncClientWebSocket(TestCase): @staticmethod def application(environ, start_response): if 'wsgi.get_websocket' not in environ: start_response('400 Not WebSocket', []) return [] websocket = environ['wsgi.get_websocket']() websocket.do_handshake() while True: message = websocket.receive() if message is None: break websocket.send('echo' + message) def setUp(self): self.server = WebSocketServer(('127.0.0.1', 15001), self.application, policy_server=False) self.server.start() self.port = self.server.server_port def tearDown(self): timeout = gevent.Timeout(0.5,RuntimeError("Timeout trying to stop server")) timeout.start() try: self.server.stop() finally: timeout.cancel()
def setUp(self): self.server = WebSocketServer(('127.0.0.1', 15001), self.application, policy_server=False) self.server.start() self.port = self.server.server_port
import asyncio import os import sys root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) sys.path.insert(0, root) from websocket.client import Client from websocket.server import WebSocketServer from websocket.stream.reader import WebSocketReader loop = asyncio.get_event_loop() socket = WebSocketServer("localhost", 3001, loop=loop) async def notify_of(client): await send_message(f'New client connected! {hex(id(client))}') async def send_message(msg): for other in socket.clients.values(): await other.writer.send(msg) @socket.connection async def on_connection(client: Client): print(f'Connection from {client.addr, client.port}') print(f'All clients: {socket.clients}') @client.message