---
name: "Protocol::WebSocket::Handshake::Server"
section: "3pm"
platform: "linux"
package: "libprotocol-websocket-perl"
version: "0.26-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Protocol::WebSocket::Handshake::Server"
---

# Protocol::WebSocket::Handshake::Server(3pm)

WebSocket Server Handshake

## NAME

Protocol::WebSocket::Handshake::Server - WebSocket Server Handshake

## SYNOPSIS

```
    my $h = Protocol::WebSocket::Handshake::Server->new;
    # Parse client request
    $h->parse(<<"EOF");
        WebSocket HTTP message
    EOF
    $h->error;   # Check if there were any errors
    $h->is_done; # Returns 1
    # Create response
    $h->to_string;
```

## DESCRIPTION

Construct or parse a server WebSocket handshake. This module is written for convenience, since using request and response directly requires the same code again and again.

## METHODS

### "new"

Create a new Protocol::WebSocket::Handshake::Server instance.

### "new\_from\_psgi"

```
    my $env = {
        HTTP_HOST => 'example.com',
        HTTP_CONNECTION => 'Upgrade',
        ...
    };
    my $handshake = Protocol::WebSocket::Handshake::Server->new_from_psgi($env);
```

Create a new Protocol::WebSocket::Handshake::Server instance from PSGI environment.

### "parse"

```
    $handshake->parse($buffer);
    $handshake->parse($handle);
```

Parse a WebSocket client request. Returns `"undef"` and sets `"error"` attribute on error.

When buffer is passed it's modified (unless readonly).

### "build\_frame"

```
    $handshake->build_frame;
```

Builds Protocol::WebSocket::Frame with an appropriate version.

### "to\_string"

Construct a WebSocket server response.

### "is\_body"

Check whether handshake is in body state.

### "is\_done"

Check whether handshake is done.
