Ich habe dieses offizielle Dokument verwiesen. Ich konnte mit JSON kommunizieren, aber mit ProtObuf empfange ich keine Daten. Ungültiger Wert: '': Ungültiger Ereignisname. Gültiger Ereignisname sollte zwischen 1 und 128 Zeichen lang sein. < /Strong>
Ich verstehe nicht, was passiert.
Code: Select all
// Create a joining message
UpstreamMessage joiningMessage = new()
{
JoinGroupMessage = new UpstreamMessage.Types.JoinGroupMessage()
{
Group = Group,
}
};
var joinData = joiningMessage.ToByteArray();
// Initialize the WebSocket
ClientWebSocket webSocket = new();
webSocket.Options.AddSubProtocol("protobuf.webpubsub.azure.v1");
await webSocket.ConnectAsync(new Uri(connStr), CancellationToken.None);
// Set up a continuous message receiver
_ = Task.Run(async () =>
{
while (webSocket.State == WebSocketState.Open)
{
var buffer = new byte[8192];
var result = await webSocket.ReceiveAsync(
new ArraySegment(buffer),
CancellationToken.None);
if (result.MessageType == WebSocketMessageType.Binary)
{
// Create a properly sized array containing only the actual message
var messageBytes = new byte[result.Count];
Array.Copy(buffer, 0, messageBytes, 0, result.Count);
try
{
var msg = DownstreamMessage.Parser.ParseFrom(messageBytes);
Console.WriteLine($"Received message: {msg}");
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing message: {ex.Message}");
}
}
else if (result.MessageType == WebSocketMessageType.Close)
{
await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", CancellationToken.None);
break;
}
}
});
// Wait for connection establishment
await Task.Delay(2000);
// Send join request
await webSocket.SendAsync(joinData, WebSocketMessageType.Binary, true, CancellationToken.None);
Console.WriteLine("Join group message sent");
// Wait for join to be processed
await Task.Delay(1000);
// Create and send data message
UpstreamMessage dataMessage = new()
{
// Set the EventMessage with proper target group
EventMessage = new UpstreamMessage.Types.EventMessage()
{
Data = new MessageData()
{
TextData = "Hello from protobuf dheeraj"
}
}
};
await webSocket.SendAsync(dataMessage.ToByteArray(), WebSocketMessageType.Binary, true, CancellationToken.None);
Console.WriteLine("Data message sent");