private async void _socket_ReceiveReady(object sender, NetMQSocketEventArgs e) { var msg = e.Socket.ReceiveMessage(); var request = SerializationMethods.FromByteArray <TData>(msg[1].Buffer); await DoWork(request); }
private async void _socket_ReceiveReady(object sender, NetMQSocketEventArgs e) { var msg = e.Socket.ReceiveMessage(); // Response socket has index 1, Dealer/Router 2 var text = Encoding.Unicode.GetString(msg[2].Buffer); var request = SerializationMethods.FromByteArray <TRequest>(msg[2].Buffer); var response = await DoWork(request); var envelope = new NetMQFrame(Encoding.UTF8.GetBytes(response.ToString())); var body = new NetMQFrame(response.ToByteArray()); msg.Append(envelope); msg.Append(body); e.Socket.SendMessage(msg); }
public TResponse SendRequest(TRequest request) { using (var socket = _context.CreateDealerSocket()) { var clientId = Guid.NewGuid(); socket.Options.Identity = Encoding.Unicode.GetBytes(clientId.ToString()); socket.Connect(_bindEndPoint); var envelope = new NetMQFrame(Encoding.UTF8.GetBytes(request.ToString())); var body = new NetMQFrame(request.ToByteArray()); var msq = new NetMQMessage(); msq.Append(envelope); msq.Append(body); socket.SendMessage(msq); var responseMsg = socket.ReceiveMessage(); return(SerializationMethods.FromByteArray <TResponse>(responseMsg[3].Buffer)); } }