test broadcast server
This commit is contained in:
		
							
								
								
									
										36
									
								
								test/compatibility/python/websockets/broadcast_server.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								test/compatibility/python/websockets/broadcast_server.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
| # WS server example | ||||
|  | ||||
| import asyncio | ||||
| import os | ||||
| import websockets | ||||
|  | ||||
|  | ||||
| clients = set() | ||||
|  | ||||
|  | ||||
| async def echo(websocket, path): | ||||
|     clients.add(websocket) | ||||
|  | ||||
|     try: | ||||
|         while True: | ||||
|             msg = await websocket.recv() | ||||
|  | ||||
|             for ws in clients: | ||||
|                 if ws != websocket: | ||||
|                     print(f'Sending {len(msg)} bytes to {ws}') | ||||
|                     await ws.send(msg) | ||||
|     except websockets.exceptions.ConnectionClosedOK: | ||||
|         print('Client terminating') | ||||
|         clients.remove(websocket) | ||||
|  | ||||
|  | ||||
| host = os.getenv('BIND_HOST', 'localhost') | ||||
| print(f'Serving on {host}:8766') | ||||
|  | ||||
| start_server = websockets.serve(echo, host, 8766, max_size=2 ** 30) | ||||
|  | ||||
| asyncio.get_event_loop().run_until_complete(start_server) | ||||
| asyncio.get_event_loop().run_forever() | ||||
|  | ||||
							
								
								
									
										43
									
								
								test/compatibility/python/websockets/broadcast_server_ssl.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								test/compatibility/python/websockets/broadcast_server_ssl.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
| # WS server example | ||||
|  | ||||
| import asyncio | ||||
| import os | ||||
| import pathlib | ||||
| import ssl | ||||
| import websockets | ||||
|  | ||||
|  | ||||
| clients = set() | ||||
|  | ||||
|  | ||||
| async def echo(websocket, path): | ||||
|     clients.add(websocket) | ||||
|  | ||||
|     try: | ||||
|         while True: | ||||
|             msg = await websocket.recv() | ||||
|  | ||||
|             for ws in clients: | ||||
|                 if ws != websocket: | ||||
|                     print(f'Sending {len(msg)} bytes to {ws}') | ||||
|                     await ws.send(msg) | ||||
|     except websockets.exceptions.ConnectionClosedOK: | ||||
|         print('Client terminating') | ||||
|         clients.remove(websocket) | ||||
|  | ||||
|  | ||||
| ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) | ||||
| ssl_context.load_cert_chain('trusted-server-crt.pem', | ||||
|                             'trusted-server-key.pem') | ||||
|  | ||||
| host = os.getenv('BIND_HOST', 'localhost') | ||||
| print(f'Serving on {host}:8766') | ||||
|  | ||||
| start_server = websockets.serve(echo, host, 8766, max_size=2 ** 30, ssl=ssl_context) | ||||
|  | ||||
| asyncio.get_event_loop().run_until_complete(start_server) | ||||
| asyncio.get_event_loop().run_forever() | ||||
|  | ||||
|  | ||||
| @@ -7,4 +7,10 @@ case $MODE in | ||||
|     echo_server_ssl) | ||||
|         python /usr/bin/echo_server_ssl.py | ||||
|         ;; | ||||
|     broadcast_server) | ||||
|         python /usr/bin/broadcast_server.py | ||||
|         ;; | ||||
|     broadcast_server_ssl) | ||||
|         python /usr/bin/broadcast_server_ssl.py | ||||
|         ;; | ||||
| esac | ||||
|   | ||||
| @@ -22,8 +22,14 @@ docker_push: | ||||
| 	docker push ${LATEST} | ||||
| 	docker push ${IMG} | ||||
|  | ||||
| server: | ||||
| echo_server: | ||||
| 	docker run -p 8766:8766 -e BIND_HOST=0.0.0.0 -e MODE=echo_server -it --rm bsergean/echo_server:build | ||||
|  | ||||
| server_ssl: | ||||
| echo_server_ssl: | ||||
| 	docker run -p 8766:8766 -e BIND_HOST=0.0.0.0 -e MODE=echo_server_ssl -it --rm bsergean/echo_server:build | ||||
|  | ||||
| broadcast_server: | ||||
| 	docker run -p 8766:8766 -e BIND_HOST=0.0.0.0 -e MODE=broadcast_server -it --rm bsergean/echo_server:build | ||||
|  | ||||
| broadcast_server_ssl: | ||||
| 	docker run -p 8766:8766 -e BIND_HOST=0.0.0.0 -e MODE=broadcast_server_ssl -it --rm bsergean/echo_server:build | ||||
|   | ||||
		Reference in New Issue
	
	Block a user