Ejemplo n.º 1
0
        private Task Send(IMode content)
        {
            return(Task.Run(() => {
                if (_Socket.State == WebSocketState.Open)
                {
                    var messageBuffer = Encoding.UTF8.GetBytes(content.GetContent());
                    var messagesCount = (int)Math.Ceiling((double)messageBuffer.Length / _SendChunkSize);

                    for (var i = 0; i < messagesCount; i++)
                    {
                        int offset = _SendChunkSize * i;
                        int count = _SendChunkSize;
                        bool isEndOfMessage = (i + 1) == messagesCount;

                        if ((count * (i + 1)) > messageBuffer.Length)
                        {
                            count = messageBuffer.Length - offset;
                        }

                        _Socket.SendAsync(new ArraySegment <byte> (messageBuffer, offset, count), WebSocketMessageType.Text, isEndOfMessage, _TokenSource.Token).Wait();
                    }
                }
            }, _TokenSource.Token));
        }