Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let listenWs onMessage port action ct = async {
- let address = sprintf "ws://localhost:%i/%s" port action
- use ws = new ClientWebSocket()
- //set big buffer, otherwise messages are split
- ws.Options.SetBuffer(65535,65535)
- do! ws.ConnectAsync(System.Uri(address), ct) |> Async.AwaitTask
- let receivedBytes = ArraySegment(Array.init 10000000 (fun _ -> 0uy))
- let rec receive messageHead = async {
- let! result = ws.ReceiveAsync(receivedBytes, ct) |> Async.AwaitTask
- let messagePart = System.Text.Encoding.UTF8.GetString(receivedBytes.Array, 0, result.Count)
- let nextMessageHead =
- match result.EndOfMessage with
- | true ->
- let message = messageHead + messagePart
- onMessage message
- | false -> ""
- return! receive nextMessageHead
- }
- return! receive ""
- }
Add Comment
Please, Sign In to add comment