Azure Pusub mit Protobuf -Daten funktioniert nichtC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Azure Pusub mit Protobuf -Daten funktioniert nicht

Post by Anonymous »

Ich verwende Generic WebSocket -Client (System.net.Nebsockets), um eine Verbindung zum Azure Web PubSub -Dienst herzustellen und zwischen zwei Parteien zu kommunizieren.
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");

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post