// SUMMARY: Send model to server public void SendModel(SocketDistributionModel model) { try { byte[] data = SocketDistributionManager.GetBytesFromObj(model); ClientSocket.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(SendCallback), ClientSocket); } catch (Exception e) { } }
// SUMMARY: Send model to client public void SendModel(SocketDistributionModel model) { if (ClientSockets.Count == 0) { return; } lock (this.LockObj) { foreach (SocketObject socket in this.ClientSockets) { try { byte[] data = SocketDistributionManager.GetBytesFromObj(model); socket.Socket.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(SendCallback), socket); } catch (Exception e) { } } } }
// SUMMARY: On receive message from client protected virtual void ReceiveCallback(IAsyncResult AR) { Socket socket = (Socket)AR.AsyncState; try { int received = socket.EndReceive(AR); byte[] dataBuf = new byte[received]; Array.Copy(_buffer, dataBuf, received); SocketDistributionModel modelReceived = SocketDistributionManager.ConvertToModel(dataBuf); if (modelReceived != null) { this.OnReceive(modelReceived, socket); } socket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), socket); } catch (Exception e) { OnSocketFatalDisconection(e, socket); } }
protected async Task Send(string uid, SocketDistributionModel model) { if (_sockets.ContainsKey(uid)) { return; } var socket = this[uid]; byte[] data = model.DataType == SocketDistributionModelDataType.JSON ? model.Data : SocketDistributionManager.GetBytesFromObj(model); if (socket.State == WebSocketState.Open) { await this[uid]?.SendAsync(data, model.WebSocketMessageType, true, default(CancellationToken)); } }
// Sending data protected async Task SendToAll(SocketDistributionModel model) { byte[] data = model.DataType == SocketDistributionModelDataType.JSON ? model.Data : SocketDistributionManager.GetBytesFromObj(model); foreach (var socket in _sockets) { if (socket.Value.State == WebSocketState.Open) { await socket.Value.SendAsync(new ArraySegment <byte>(data), model.WebSocketMessageType, true, default(CancellationToken)); } } }
public Task Send(SocketDistributionModel model) { byte[] data = SocketDistributionManager.GetBytesFromObj(model); this.socket.Send(data); return(Task.FromResult(0)); }