Exemple #1
0
        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);
        }
Exemple #2
0
        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));
            }
        }