private async Task SendAsync(String message)
{
var messageBuffer = Encoding.UTF8.GetBytes(message);
var remainder = 0;
var messagesCount = Math.DivRem(messageBuffer.Length, SendChunkSize, out remainder);
if (remainder > 0)
{
messagesCount++;
}
remainder = messageBuffer.Length;
for (var i = 0; i < messagesCount; i++)
{
var offset = SendChunkSize * i;
var lastMessage = (i + 1) == messagesCount;
var count = lastMessage ? remainder : SendChunkSize;
var segment = new ArraySegment<Byte>(messageBuffer, offset, count);
await _ws.SendAsync(segment, WebSocketMessageType.Text, lastMessage, _cts.Token).ConfigureAwait(false);
remainder -= SendChunkSize;
}
}