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

if ($WebSocket.State -eq [System.Net.WebSockets.WebSocketState]::Closed) {
    return;
}
if ($WebSocket.State -ne [System.Net.WebSockets.WebSocketState]::Open) {
    Write-Error "Cannot disconnect when $($WebSocket.State)";
    return;
}

$WebSocket.CloseAsync([System.Net.WebSockets.WebSocketCloseStatus]::NormalClosure, "", [System.Threading.CancellationToken]::None).GetAwaiter().GetResult() | Out-Null;
$WebSocket.Dispose();