Skip to content

Commit ce03dff

Browse files
committed
there may be multiple messages in the polling response
1 parent 600d0ed commit ce03dff

File tree

3 files changed

+75
-50
lines changed

3 files changed

+75
-50
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using Moq;
3+
using RichardSzalay.MockHttp;
4+
using SocketIOClient.Transport;
5+
using SocketIOClient.UriConverters;
6+
using System;
7+
using System.Collections.Generic;
8+
using System.Globalization;
9+
using System.Text;
10+
using System.Threading;
11+
using System.Threading.Tasks;
12+
13+
namespace SocketIOClient.UnitTest.TransportTests
14+
{
15+
[TestClass]
16+
public class HttpTransportTest
17+
{
18+
[TestMethod]
19+
public async Task TextWithBinaryTest()
20+
{
21+
string uri = "http://localhost:11003/socket.io/?token=V3&EIO=4&transport=polling";
22+
23+
var mockHttp = new MockHttpMessageHandler();
24+
mockHttp.When(uri)
25+
.Respond("text/plain", "452-[\"2 params\",{\"_placeholder\":true,\"num\":0},{\"code\":64,\"msg\":{\"_placeholder\":true,\"num\":1}}]bCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEKMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyCjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMwo0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQKNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1CjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Ngo3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzcKODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4Cjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OQpBbWVyaWNhbkFtZXJpY2FuQW1lcmljYW5BbWVyaWNhbkFtZXJpY2FuQW1lcmljYW5BbWVyaWNhbkFtZXJpY2FuQW1lcmljYW5BbWVyaWNhbkFtZXJpY2FuQW1lcmljYW5BbWUK5L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2gCuOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBrgphYmM=bCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAoxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEKMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyCjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMwo0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQKNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1CjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Ngo3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzcKODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4Cjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OQpBbWVyaWNhbkFtZXJpY2FuQW1lcmljYW5BbWVyaWNhbkFtZXJpY2FuQW1lcmljYW5BbWVyaWNhbkFtZXJpY2FuQW1lcmljYW5BbWVyaWNhbkFtZXJpY2FuQW1lcmljYW5BbWUK5L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2g5aW95L2gCuOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBruOBrgp4eXo=");
26+
var httpClient = mockHttp.ToHttpClient();
27+
28+
var clientWebSocket = new Mock<IClientWebSocket>();
29+
30+
var uriConverter = new Mock<IUriConverter>();
31+
uriConverter
32+
.Setup(x => x.GetHandshakeUri(It.IsAny<Uri>(), It.IsAny<string>(), It.IsAny<IEnumerable<KeyValuePair<string, string>>>()))
33+
.Returns(new Uri(uri));
34+
35+
string resultText = null;
36+
var bytes = new List<byte[]>();
37+
var transport = new HttpTransport(httpClient)
38+
{
39+
OnTextReceived = text => resultText = text,
40+
OnBinaryReceived = b => bytes.Add(b)
41+
};
42+
await transport.GetAsync(uri, CancellationToken.None);
43+
44+
await Task.Delay(100);
45+
46+
string longString = @"
47+
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
48+
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
49+
222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
50+
333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
51+
444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
52+
555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
53+
666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
54+
777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
55+
888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
56+
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
57+
AmericanAmericanAmericanAmericanAmericanAmericanAmericanAmericanAmericanAmericanAmericanAmericanAme
58+
你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你
59+
ののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののの
60+
";
61+
62+
Assert.AreEqual("452-[\"2 params\",{\"_placeholder\":true,\"num\":0},{\"code\":64,\"msg\":{\"_placeholder\":true,\"num\":1}}]", resultText);
63+
Assert.AreEqual(2, bytes.Count);
64+
string str1 = longString + "abc";
65+
string str2 = Encoding.UTF8.GetString(bytes[0]);
66+
int c1 = CultureInfo.CurrentCulture.CompareInfo.Compare(str1, str2, CompareOptions.IgnoreSymbols);
67+
string str3 = longString + "xyz";
68+
string str4 = Encoding.UTF8.GetString(bytes[1]);
69+
int c2 = CultureInfo.CurrentCulture.CompareInfo.Compare(str1, str2, CompareOptions.IgnoreSymbols);
70+
Assert.AreEqual(0, c1);
71+
Assert.AreEqual(0, c2);
72+
}
73+
}
74+
}

src/SocketIOClient.UnitTest/TransportTests/TransportRouterTest.cs

Lines changed: 0 additions & 49 deletions
This file was deleted.

src/SocketIOClient/Transport/HttpTransport.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ private void Produce(string text)
7272
}
7373
else
7474
{
75-
OnTextReceived(text);
75+
OnTextReceived(item);
7676
}
7777
}
7878
}

0 commit comments

Comments
 (0)