MCPcopy Index your code
hub / github.com/python-websockets/websockets / serve

Function serve

src/websockets/sync/server.py:326–624  ·  view source on GitHub ↗

Create a WebSocket server listening on ``host`` and ``port``. Whenever a client connects, the server creates a :class:`ServerConnection`, performs the opening handshake, and delegates to the ``handler``. The handler receives the :class:`ServerConnection` instance, which you can

(
    handler: Callable[[ServerConnection], None],
    host: str | None = None,
    port: int | None = None,
    *,
    # TCP/TLS
    sock: socket.socket | None = None,
    ssl: ssl_module.SSLContext | None = None,
    # WebSocket
    origins: Sequence[Origin | re.Pattern[str] | None] | None = None,
    extensions: Sequence[ServerExtensionFactory] | None = None,
    subprotocols: Sequence[Subprotocol] | None = None,
    select_subprotocol: (
        Callable[
            [ServerConnection, Sequence[Subprotocol]],
            Subprotocol | None,
        ]
        | None
    ) = None,
    compression: str | None = "deflate",
    # HTTP
    process_request: (
        Callable[
            [ServerConnection, Request],
            Response | None,
        ]
        | None
    ) = None,
    process_response: (
        Callable[
            [ServerConnection, Request, Response],
            Response | None,
        ]
        | None
    ) = None,
    server_header: str | None = SERVER,
    # Timeouts
    open_timeout: float | None = 10,
    ping_interval: float | None = 20,
    ping_timeout: float | None = 20,
    close_timeout: float | None = 10,
    # Limits
    max_size: int | None | tuple[int | None, int | None] = 2**20,
    max_queue: int | None | tuple[int | None, int | None] = 16,
    # Logging
    logger: LoggerLike | None = None,
    # Escape hatch for advanced customization
    create_connection: type[ServerConnection] | None = None,
    **kwargs: Any,
)

Source from the content-addressed store, hash-verified

324
325
326def serve(
327 handler: Callable[[ServerConnection], None],
328 host: str | None = None,
329 port: int | None = None,
330 *,
331 # TCP/TLS
332 sock: socket.socket | None = None,
333 ssl: ssl_module.SSLContext | None = None,
334 # WebSocket
335 origins: Sequence[Origin | re.Pattern[str] | None] | None = None,
336 extensions: Sequence[ServerExtensionFactory] | None = None,
337 subprotocols: Sequence[Subprotocol] | None = None,
338 select_subprotocol: (
339 Callable[
340 [ServerConnection, Sequence[Subprotocol]],
341 Subprotocol | None,
342 ]
343 | None
344 ) = None,
345 compression: str | None = "deflate",
346 # HTTP
347 process_request: (
348 Callable[
349 [ServerConnection, Request],
350 Response | None,
351 ]
352 | None
353 ) = None,
354 process_response: (
355 Callable[
356 [ServerConnection, Request, Response],
357 Response | None,
358 ]
359 | None
360 ) = None,
361 server_header: str | None = SERVER,
362 # Timeouts
363 open_timeout: float | None = 10,
364 ping_interval: float | None = 20,
365 ping_timeout: float | None = 20,
366 close_timeout: float | None = 10,
367 # Limits
368 max_size: int | None | tuple[int | None, int | None] = 2**20,
369 max_queue: int | None | tuple[int | None, int | None] = 16,
370 # Logging
371 logger: LoggerLike | None = None,
372 # Escape hatch for advanced customization
373 create_connection: type[ServerConnection] | None = None,
374 **kwargs: Any,
375) -> Server:
376 """
377 Create a WebSocket server listening on ``host`` and ``port``.
378
379 Whenever a client connects, the server creates a :class:`ServerConnection`,
380 performs the opening handshake, and delegates to the ``handler``.
381
382 The handler receives the :class:`ServerConnection` instance, which you can
383 use to send and receive messages.

Callers 15

mainFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90
serverFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90

Calls 3

validate_subprotocolsFunction · 0.85
ServerClass · 0.70

Tested by 15

test_connectionMethod · 0.72
test_existing_socketMethod · 0.72
test_loggerMethod · 0.72

Used in the wild real call sites across dependent graphs

searching dependent graphs…