Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/external/curl/tests/http/testenv/ws_echo_server.py
2066 views
1
#!/usr/bin/env python3
2
# -*- coding: utf-8 -*-
3
#***************************************************************************
4
# _ _ ____ _
5
# Project ___| | | | _ \| |
6
# / __| | | | |_) | |
7
# | (__| |_| | _ <| |___
8
# \___|\___/|_| \_\_____|
9
#
10
# Copyright (C) Daniel Stenberg, <[email protected]>, et al.
11
#
12
# This software is licensed as described in the file COPYING, which
13
# you should have received as part of this distribution. The terms
14
# are also available at https://curl.se/docs/copyright.html.
15
#
16
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
17
# copies of the Software, and permit persons to whom the Software is
18
# furnished to do so, under the terms of the COPYING file.
19
#
20
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
21
# KIND, either express or implied.
22
#
23
# SPDX-License-Identifier: curl
24
#
25
###########################################################################
26
#
27
import argparse
28
import asyncio
29
import logging
30
31
from websockets import server
32
from websockets.exceptions import ConnectionClosedError
33
34
35
async def echo(websocket):
36
try:
37
async for message in websocket:
38
await websocket.send(message)
39
except ConnectionClosedError:
40
pass
41
42
43
async def run_server(port):
44
async with server.serve(echo, "localhost", port):
45
await asyncio.Future() # run forever
46
47
48
def main():
49
parser = argparse.ArgumentParser(prog='scorecard', description="""
50
Run a websocket echo server.
51
""")
52
parser.add_argument("--port", type=int,
53
default=9876, help="port to listen on")
54
args = parser.parse_args()
55
56
logging.basicConfig(
57
format="%(asctime)s %(message)s",
58
level=logging.DEBUG,
59
)
60
61
asyncio.run(run_server(args.port))
62
63
64
if __name__ == "__main__":
65
main()
66
67