Beispiel #1
0
 public TransportMessage(Object message, String messageId, String messageName, TransportMessageType messageType)
 {
     Message     = message;
     MessageId   = messageId;
     MessageName = messageName;
     MessageType = messageType;
 }
 public TransportMessage(Object message, String messageId, String messageName, TransportMessageType messageType)
 {
     Message = message;
     MessageId = messageId;
     MessageName = messageName;
     MessageType = messageType;
 }
Beispiel #3
0
        private async Task SendAsync(TransportMessageType type, byte[] bytes, CancellationToken cancellationToken)
        {
            try
            {
                await _sendLock.WaitAsync().ConfigureAwait(false);

                if (type == TransportMessageType.Binary && Options.EIO == 3)
                {
                    byte[] buffer = new byte[bytes.Length + 1];
                    buffer[0] = 4;
                    Buffer.BlockCopy(bytes, 0, buffer, 1, bytes.Length);
                    bytes = buffer;
                }
                int pages = (int)Math.Ceiling(bytes.Length * 1.0 / SendChunkSize);
                for (int i = 0; i < pages; i++)
                {
                    int offset = i * SendChunkSize;
                    int length = SendChunkSize;
                    if (offset + length > bytes.Length)
                    {
                        length = bytes.Length - offset;
                    }
                    byte[] subBuffer = new byte[length];
                    Buffer.BlockCopy(bytes, offset, subBuffer, 0, subBuffer.Length);
                    bool endOfMessage = pages - 1 == i;
                    await _ws.SendAsync(subBuffer, type, endOfMessage, cancellationToken).ConfigureAwait(false);
                }
            }
            finally
            {
                _sendLock.Release();
            }
        }
        public async Task SendAsync(byte[] bytes, TransportMessageType type, bool endOfMessage, CancellationToken cancellationToken)
        {
            var msgType = WebSocketMessageType.Text;

            if (type == TransportMessageType.Binary)
            {
                msgType = WebSocketMessageType.Binary;
            }
            await _ws.SendAsync(new ArraySegment <byte>(bytes), msgType, endOfMessage, cancellationToken).ConfigureAwait(false);
        }