### Method

# Soup Server add_websocket_handler

#### Declaration [src]

    void
    soup_server_add_websocket_handler (
      SoupServer* server,
      const char* path,
      const char* origin,
      char** protocols,
      SoupServerWebsocketCallback callback,
      gpointer user_data,
      GDestroyNotify destroy
    )

#### Description [src]

Adds a WebSocket handler to `server` for requests prefixed by `path`.

If `path` is `NULL` or “/”, then this will be the default handler for all requests that don’t have a more specific handler.

When a path has a WebSocket handler registered, `server` will check incoming requests for WebSocket handshakes after all other handlers have run (unless some earlier handler has already set a status code on the message), and update the request’s status, response headers, and response body accordingly.

If `origin` is non-`NULL`, then only requests containing a matching “Origin” header will be accepted. If `protocols` is non-`NULL`, then only requests containing a compatible “Sec-WebSocket-Protocols” header will be accepted. More complicated requirements can be handled by adding a normal handler to `path`, and having it perform whatever checks are needed and setting a failure status code if the handshake should be rejected.

#### Parameters

`path`

  Type: `const char*`

  The toplevel path for the handler.

  The argument can be `NULL`.
  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`origin`

  Type: `const char*`

  The origin of the connection.

  The argument can be `NULL`.
  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`protocols`

  Type: An array of `char*`

  The protocols supported by this handler.

  The argument can be `NULL`.
  The array must be `NULL`-terminated.
  The data is owned by the caller of the function.
  Each element is a NUL terminated UTF-8 string.

`callback`

  Type: `SoupServerWebsocketCallback`

  Callback to invoke for successful WebSocket requests under `path`.

`user_data`

  Type: `gpointer`

  Data for `callback`.

  The argument can be `NULL`.
  The data is owned by the caller of the function.

`destroy`

  Type: `GDestroyNotify`

  Destroy notifier to free `user_data`.