Make emitWithAck
for a room say which socket(s) failed to ack
#4967
Labels
enhancement
New feature or request
emitWithAck
for a room say which socket(s) failed to ack
#4967
Is your feature request related to a problem? Please describe.
I'm trying to make use of
io.to("room").emitWithAck(...)
to make clients all proceed to the next stage of a game, but I'm not quite sure what I could reasonably do if an ack fails. Ideally I'd re-send the data to that client, forcefully disconnect it, or notify the rest of the room that the client is having connectivity issues.But as far as I could tell browsing the socket.io and memory adapter source, it's currently not possible to determine which socket(s) failed to ack?
Describe the solution you'd like
Using something like:
It would be great if I could find out in the
catch
block which socket(s) failed to ack.Describe alternatives you've considered
The first alternative I could think of would be to
emitWithAck
to each socket individually, and then emit an"ok go ahead"
event to the room, but that has the same problem: Not every client may get the follow-up event.Another alternative I can think of would be to
emitWithAck
and if it fails, emit a message to each client individually and seeing which one (if any) fails to respond. It seems a bit tedious though, especially considering socket.io already knows which socket(s) it was that failed.And an idea I got while typing this (and may be the option I'll go with) would be that I make the client respond to the event with an identifier unique to the client. Then the failed socket would be the one whose identifier was not in any of the ack responses, after which I could look up that ID in some object.
The text was updated successfully, but these errors were encountered: