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; }
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); }