Skip to content

Commit e3f63ed

Browse files
committed
hold message if it is not ready
1 parent 4864838 commit e3f63ed

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

src/SocketIOClient/V2/Session/HttpSession.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ private void OnNextTextMessage(string text)
5353
{
5454
return;
5555
}
56-
if (message.Type == MessageType.Binary)
56+
if (message.Type is MessageType.Binary or MessageType.BinaryAck)
5757
{
5858
_messageQueue.Enqueue((IBinaryMessage)message);
5959
return;

tests/SocketIOClient.UnitTests/V2/Session/HttpSessionTests.cs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,4 +178,53 @@ public void OnNext_BinaryMessageReady_MessageWillBePushed()
178178
session.Subscribe(observer);
179179
return (session, httpAdapter, httpClient, observer);
180180
}
181+
182+
[Fact]
183+
public void OnNext_BinaryAckMessageIsNotReady_NoMessageWillBePushed()
184+
{
185+
var observer = Substitute.For<IMyObserver<IMessage>>();
186+
_session.Subscribe(observer);
187+
188+
_serializer.Deserialize(Arg.Any<string>())
189+
.Returns(new SystemJsonBinaryAckMessage
190+
{
191+
Id = 1,
192+
BytesCount = 1,
193+
});
194+
195+
_session.OnNext(new ProtocolMessage
196+
{
197+
Type = ProtocolMessageType.Text,
198+
});
199+
200+
observer.Received(0).OnNext(Arg.Any<IMessage>());
201+
_session.PendingDeliveryCount.Should().Be(1);
202+
}
203+
204+
[Fact]
205+
public void OnNext_BinaryAckMessageReady_MessageWillBePushed()
206+
{
207+
var observer = Substitute.For<IMyObserver<IMessage>>();
208+
_session.Subscribe(observer);
209+
210+
_serializer
211+
.Deserialize(Arg.Any<string>())
212+
.Returns(new SystemJsonBinaryAckMessage
213+
{
214+
Id = 1,
215+
BytesCount = 1,
216+
});
217+
218+
_session.OnNext(new ProtocolMessage
219+
{
220+
Type = ProtocolMessageType.Text,
221+
});
222+
_session.OnNext(new ProtocolMessage
223+
{
224+
Type = ProtocolMessageType.Bytes,
225+
});
226+
227+
observer.Received(1).OnNext(Arg.Any<IBinaryMessage>());
228+
_session.PendingDeliveryCount.Should().Be(0);
229+
}
181230
}

0 commit comments

Comments
 (0)