Skip to content

Commit 9bb9763

Browse files
author
James Brundage
committed
feat: WebSocket.Client.ThreadJob.Send ( Fixes #89 )
1 parent e05d5c9 commit 9bb9763

File tree

1 file changed

+38
-0
lines changed
  • Types/WebSocket.ThreadJob/WebSocket.Client.ThreadJob

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<#
2+
.SYNOPSIS
3+
Sends a WebSocket message.
4+
.DESCRIPTION
5+
Sends a message to a WebSocket server.
6+
#>
7+
param(
8+
[PSObject]
9+
$Message
10+
)
11+
12+
function sendMessage {
13+
param([Parameter(ValueFromPipeline)]$msg)
14+
process {
15+
if ($msg -is [byte[]]) {
16+
[ArraySegment[byte]]$messageSegment = [ArraySegment[byte]]::new($msg)
17+
if ($null -ne $messageSegment -and $this.WebSocket.SendAsync) {
18+
$this.WebSocket.SendAsync($messageSegment, 'Binary', 'EndOfMessage',[Threading.Cancellationtoken]::None)
19+
}
20+
} else {
21+
$jsonMessage = ConvertTo-Json -InputObject $msg
22+
$messageSegment = [ArraySegment[byte]]::new($OutputEncoding.GetBytes($jsonMessage))
23+
if ($null -ne $jsonMessage -and $this.WebSocket.SendAsync) {
24+
$this.WebSocket.SendAsync($messageSegment, 'Text', 'EndOfMessage', [Threading.Cancellationtoken]::None)
25+
}
26+
}
27+
}
28+
}
29+
30+
if ($message -is [Collections.IList] -and $message -isnot [byte[]]) {
31+
$Message | sendMessage
32+
} else {
33+
sendMessage -msg $Message
34+
}
35+
36+
37+
38+

0 commit comments

Comments
 (0)