📄 Send-WebSocket.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[CmdletBinding()]
param (
    [Parameter(Mandatory = $true, Position = 0)]
    [System.Net.WebSockets.ClientWebSocket]
    $WebSocket,
    [Parameter(Mandatory = $true, Position = 1, ValueFromPipeline = $true)]
    [string]
    $Body
)

if ($WebSocket.State -ne [System.Net.WebSockets.WebSocketState]::Open) {
    Write-Error "Can only send from Open WebSockets, was $($WebSocket.State)";
    return;
}

$WebSocket.SendAsync([System.Memory[byte]]::new([System.Text.Encoding]::UTF8.GetBytes($Body)), [System.Net.WebSockets.WebSocketMessageType]::Text, $true, [System.Threading.CancellationToken]::None).GetAwaiter().GetResult();