We are getting pending requests for a signalr client, bunched as an array in a poll response, like below:
{"C":"s-0,9E632",
"M":[
84
{"H":"MyHub","M":"SetSomething","A":[{"myProp1":"setting","myProp2":59.0}]}
1,
84
{"H":"MyHub","M":"SetSomething","A":[{"myProp1":"setting","myProp2":60.0}]}
1,
84
{"H":"MyHub","M":"SetSomething","A":[{"myProp1":"setting","myProp2":61.0}]}
1,
84
{"H":"MyHub","M":"SetSomething","A":[{"myProp1":"setting","myProp2":62.0}]}
1,
6b
{"H":"MyHub","M":"SetMore","A":[{"myProp3":"Somestring","myProp4":0}]}
2
]}
Generally a single response to a poll comes like below:
{"C":"s-0,9E621","M":[
6b
{"H":"MyHub","M":"SetSomething","A":[{"myProp1":"setting","myProp2":59.0}]}
2
]}
I believe the ring buffer stores messages upto the DefaultMessageBufferSize limit, and would be sending those messages to the client when polled for it. My question is would they be sent one by one, like a queue, one response to one poll or all messages sent together as a response to the first poll (like we are getting, mentioned above)?
Background and actual issue: We have a signalr client(C1) working on longpolling and our SignalR server in the cloud. There is a user(U1) who connects to the server and sends messages for C1 and we forward those messages to C1 using Clients.User({C1}).{Method} on the server. When U1 sends multiple quick requests to C1, and C1 is unable to process them quickly enough, we see the bunched response sent to C1. C1 is not configured to handle the bunched response, and it rejects that response and we see a unending loop of the same bunched response to C1 from the server for every further poll.
Would appreciate any insights into this. Thanks in advance.