Request/Response Pattern

Illustrates synchronous request/reply messaging with timeouts using the v11 API.

Scenario

Your client sends parameters to the server and waits for a byte[] response.

Code Example

using System;
using System.Collections.Generic;
using System.Text;
using SocketMeister;

// Server
var server = new SocketServer(port: 5002, CompressSentData: false);
server.MessageReceived += (s, e) =>
{
    // Parameters are strongly typed; expect a single string
    string input = (string)e.Parameters[0];
    int result = int.Parse(input) * 2;
    e.Response = Encoding.UTF8.GetBytes(result.ToString());
};
server.Start();

// Client
var endpoints = new List<SocketEndPoint> { new SocketEndPoint("localhost", 5002) };
var client = new SocketClient(endpoints, EnableCompression: false, friendlyName: "ReqRespClient");
client.Start();

string request = "21";
byte[] bytes = client.SendMessage(new object[] { request }, TimeoutMilliseconds: 5000);
string reply = Encoding.UTF8.GetString(bytes);
Console.WriteLine($"Request {request}, got reply {reply}");

client.Stop();
server.Stop();