Use Acknowledgments (Ack)
masterAcknowledgments allow for two-way communication during event emission.
1. Client-to-Server Ack
Emit an event with a callback. The server processes the event and invokes the callback with data.
await client.EmitAsync("hi", ["Hi, I'm Client"], ack =>
{
var message1 = ack.GetValue<string>(0)!;
var message2 = ack.GetValue<string>(1)!;
return Task.CompletedTask;
});2. Server-to-Client Ack
Listen for an event that includes a callback. After processing, the client sends data back to the server using ctx.SendAckDataAsync(data).
client.On("add", async ctx =>
{
var a = ctx.GetValue<int>(0);
var b = ctx.GetValue<int>(1);
await ctx.SendAckDataAsync([a + b]);
});// Client emitting with Ack
await client.EmitAsync("hi", ["Hi, I'm Client"], ack =>
{
var message1 = ack.GetValue<string>(0)!;
var message2 = ack.GetValue<string>(1)!;
return Task.CompletedTask;
});
// Client listening for Ack
client.On("add", async ctx =>
{
var a = ctx.GetValue<int>(0);
var b = ctx.GetValue<int>(1);
await ctx.SendAckDataAsync([a + b]);
});