private void ReadCompleted(IAsyncResult result)
{
var stream = (NetworkStream)result.AsyncState;
try
{
var x = stream.EndRead(result);
if(x == 0) Reconnect(0);
for (var i = 0; i < x;i++)
{
if (_buffer[i] == 0)
{
var data = _readBuffer.ToArray();
var actual = Encoding.UTF8.GetString(data, 0, data.Length);
if (_messageReceived != null)
_messageReceived(this, new MessageArgs() { Message = actual });
_onMessage(actual);
_readBuffer.SetLength(0);
}
else
{
_readBuffer.WriteByte(_buffer[i]);
}
}
stream.BeginRead(_buffer, 0, _buffer.Length, ReadCompleted, stream);
}
catch (Exception ex)
{
WriteError(ex);
Reconnect(0);
}
}