# WebSocketSignaller

<a id="websocketsignaller"></a>

# WebSocketSignaller

```cpp
#include <icy/webrtc/support/wssignaller.h>

class WebSocketSignaller
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:29](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L29)

> **Inherits:** [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface)

[SignallingInterface](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) implementation using plain JSON over WebSocket.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`SendMessage`](#sendmessage) | `variable` | Declared here |
| [`WebSocketSignaller`](#websocketsignaller-1) | `function` | Declared here |
| [`~WebSocketSignaller`](#websocketsignaller-2) | `function` | Declared here |
| [`WebSocketSignaller`](#websocketsignaller-3) | `function` | Declared here |
| [`operator=`](#operator-255) | `function` | Declared here |
| [`sendSdp`](#sendsdp-1) | `function` | Declared here |
| [`sendCandidate`](#sendcandidate-1) | `function` | Declared here |
| [`sendControl`](#sendcontrol-1) | `function` | Declared here |
| [`receive`](#receive) | `function` | Declared here |
| [`setLocalPeerId`](#setlocalpeerid) | `function` | Declared here |
| [`localPeerId`](#localpeerid) | `function` | Declared here |
| [`_localPeerId`](#_localpeerid) | `variable` | Declared here |
| [`_mutex`](#_mutex-27) | `variable` | Declared here |
| [`sendJson`](#sendjson-1) | `function` | Declared here |
| [`SdpReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sdpreceived) | `variable` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`CandidateReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#candidatereceived) | `variable` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`ControlReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#controlreceived) | `variable` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`~SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface-1) | `function` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`sendSdp`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendsdp) | `function` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`sendCandidate`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcandidate) | `function` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |
| [`sendControl`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcontrol) | `function` | Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface) |

## Inherited from [`SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`SdpReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sdpreceived)  | Fires when an SDP offer or answer arrives from a remote peer. Parameters: peerId, type ("offer"/"answer"), sdp. |
| `variable` | [`CandidateReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#candidatereceived)  | Fires when an ICE candidate arrives from a remote peer. Parameters: peerId, candidate, mid. |
| `variable` | [`ControlReceived`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#controlreceived)  | Fires when a control message arrives from a remote peer. Parameters: peerId, type ("init"/"accept"/"reject"/"hangup"), reason. |
| `function` | [`~SignallingInterface`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#signallinginterface-1) `virtual` | Defaulted destructor. |
| `function` | [`sendSdp`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendsdp) `virtual` | Send an SDP offer or answer to the remote peer. |
| `function` | [`sendCandidate`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcandidate) `virtual` | Send an ICE candidate to the remote peer. |
| `function` | [`sendControl`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcontrol) `virtual` | Send a control message to the remote peer. |

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const std::string &)> | [`SendMessage`](#sendmessage)  |  |

---

<a id="sendmessage"></a>

### SendMessage

```cpp
Signal< void(const std::string &)> SendMessage
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const std::string &)>

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:52](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L52)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`WebSocketSignaller`](#websocketsignaller-1) `explicit` |  |
|  | [`~WebSocketSignaller`](#websocketsignaller-2) `override` |  |
|  | [`WebSocketSignaller`](#websocketsignaller-3)  | Deleted constructor. |
| [`WebSocketSignaller`](#websocketsignaller) & | [`operator=`](#operator-255)  | Deleted assignment operator. |
| `void` | [`sendSdp`](#sendsdp-1) `virtual` `override` | Send an SDP offer or answer to the remote peer. |
| `void` | [`sendCandidate`](#sendcandidate-1) `virtual` `override` | Send an ICE candidate to the remote peer. |
| `void` | [`sendControl`](#sendcontrol-1) `virtual` `override` | Send a control message to the remote peer. |
| `void` | [`receive`](#receive)  |  |
| `void` | [`setLocalPeerId`](#setlocalpeerid) `inline` |  |
| `const std::string &` | [`localPeerId`](#localpeerid) `const` `inline` |  |

---

<a id="websocketsignaller-1"></a>

### WebSocketSignaller

`explicit`

```cpp
explicit WebSocketSignaller(const std::string & localPeerId = {})
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:32](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L32)

---

<a id="websocketsignaller-2"></a>

### ~WebSocketSignaller

`override`

```cpp
~WebSocketSignaller() override
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:33](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L33)

---

<a id="websocketsignaller-3"></a>

### WebSocketSignaller

```cpp
WebSocketSignaller(const WebSocketSignaller &) = delete
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:35](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L35)

Deleted constructor.

---

<a id="operator-255"></a>

### operator=

```cpp
WebSocketSignaller & operator=(const WebSocketSignaller &) = delete
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:36](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L36)

Deleted assignment operator.

---

<a id="sendsdp-1"></a>

### sendSdp

`virtual` `override`

```cpp
virtual void sendSdp(const std::string & peerId, const std::string & type, const std::string & sdp) override
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:38](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L38)

Send an SDP offer or answer to the remote peer.

#### Reimplements

- [`SignallingInterface::sendSdp`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendsdp)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `peerId` | `const std::string &` | Remote peer identifier. |
| `type` | `const std::string &` | "offer" or "answer". |
| `sdp` | `const std::string &` | The SDP string. |

---

<a id="sendcandidate-1"></a>

### sendCandidate

`virtual` `override`

```cpp
virtual void sendCandidate(const std::string & peerId, const std::string & candidate, const std::string & mid) override
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:42](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L42)

Send an ICE candidate to the remote peer.

#### Reimplements

- [`SignallingInterface::sendCandidate`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcandidate)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `peerId` | `const std::string &` | Remote peer identifier. |
| `candidate` | `const std::string &` | The candidate string (from RTCIceCandidate). |
| `mid` | `const std::string &` | The sdpMid value. |

---

<a id="sendcontrol-1"></a>

### sendControl

`virtual` `override`

```cpp
virtual void sendControl(const std::string & peerId, const std::string & type, const std::string & reason = {}) override
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:46](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L46)

Send a control message to the remote peer.

#### Reimplements

- [`SignallingInterface::sendControl`](https://auscaster.com/icey/docs/api-reference/icy-wrtc-SignallingInterface.md#sendcontrol)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `peerId` | `const std::string &` | Remote peer identifier. |
| `type` | `const std::string &` | Control type: "init", "accept", "reject", "hangup". |
| `reason` | `const std::string &` | Optional reason string (for reject/hangup). |

---

<a id="receive"></a>

### receive

```cpp
void receive(const std::string & json)
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:50](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L50)

---

<a id="setlocalpeerid"></a>

### setLocalPeerId

`inline`

```cpp
inline void setLocalPeerId(const std::string & id)
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:54](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L54)

---

<a id="localpeerid"></a>

### localPeerId

`const` `inline`

```cpp
inline const std::string & localPeerId() const
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:55](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L55)

## Private Attributes

| Return | Name | Description |
|--------|------|-------------|
| `std::string` | [`_localPeerId`](#_localpeerid)  |  |
| `std::mutex` | [`_mutex`](#_mutex-27)  |  |

---

<a id="_localpeerid"></a>

### _localPeerId

```cpp
std::string _localPeerId
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:60](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L60)

---

<a id="_mutex-27"></a>

### _mutex

```cpp
std::mutex _mutex
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:61](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L61)

## Private Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`sendJson`](#sendjson-1)  |  |

---

<a id="sendjson-1"></a>

### sendJson

```cpp
void sendJson(const json::Value & msg)
```

[Defined in src/webrtc/support/include/icy/webrtc/support/wssignaller.h:58](https://github.com/auscaster/icey/blob/main/src/webrtc/support/include/icy/webrtc/support/wssignaller.h#L58)
