David Fowler
7df5c87815
Add copyright headers to new files
2018-03-18 15:39:20 -07:00
David Fowler
b792fcb4ef
Reduce the per message read allocations ( #1635 )
...
- Introduced Utf8BufferTextReader that writes buffers directly into
the char[] allocated by JSON.NET when reading via the JsonReader.
- Use IArrayPool implementation over ArrayPool<char> when reading
incomming messages.
- Replaced JToken parsing with manual parsing using JsonTextReader.
- Added tests for parsing incoming JSON messages with out of order
properties.
- Make access to message headers lazy
- Changed IHubProtocol.TryParseMessage to be ReadOnlyMemory<byte> instead of ReadOnlySpan<byte>
2018-03-18 15:16:03 -07:00
BrennanConroy
db0dc0f960
Ignore writeasync failures when sending to multiple connections ( #1589 )
2018-03-16 16:48:05 -07:00
BrennanConroy
0e38ee3e63
Create connectionIds using RNGCrypto ( #1606 )
2018-03-16 16:16:34 -07:00
David Fowler
079a56be1a
Small optimizations ( #1617 )
...
- Return ValueTask instead of Task from WriteAsync helpers
- Use TryGet instead of foreach to avoid enumerator (though it's just a stack allocation here)
2018-03-16 16:08:11 -07:00
BrennanConroy
c640f422e0
Pascal case formatted log parameter names ( #1615 )
2018-03-16 12:13:27 -07:00
BrennanConroy
9839e6b07b
Perf in MessageParsers ( #1616 )
2018-03-16 11:40:15 -07:00
David Fowler
227c6b8133
Use the array unpacker instead of the Stream unpacker ( #1619 )
...
- This reduces allocations and improves throughout of msgpack
2018-03-16 09:41:34 -07:00
James Newton-King
2d6077db4a
Removed params from proxy's SendAsync and rename to SendCoreAsync ( #1605 )
2018-03-16 14:05:22 +13:00
David Fowler
d27844dfef
ConnectionMetadata is now ConnectionItems ( #1604 )
...
* ConnectionMetadata is now ConnectionItems
2018-03-14 20:57:40 -07:00
Andrew Stanton-Nurse
2b68db873a
add AddRedis overload that takes connection string ( #1588 )
2018-03-14 16:24:28 -07:00
David Fowler
6a8ede0770
Further making Microsoft.AspNetCore.Sockets "not a thing" ( #1599 )
...
- This PR attempts to move things where they are needed instead of where they
happened to be used. As a result we should now have Sockets.Abstractions and
Sockets down to the minimal set of things required to make them run.
Sockets.Abstractions should go away in favor of Protocol.Abstractions and
Sockets contains the EndPoint abstraction and related types.
- Moved ConnectionManager and friends to
Sockets.Http.
-Removed Sockets and moved everything into Sockets.Abstractions.
- Moved DefaultConnection and put it in Sockets.Abstractions.
2018-03-14 15:37:24 -07:00
David Fowler
dc0567690d
Use features from Protocol.Abstractions ( #1594 )
...
- This is part of the grand unification of the connection layer between SignalR and Kestrel
2018-03-14 08:17:07 -07:00
BrennanConroy
62956530ae
Rename StreamAsync to StreamAsChannelAsync ( #1587 )
2018-03-13 15:04:11 -07:00
Andrew Stanton-Nurse
fb6121399c
Remove support for binary over SSE and add transfer format to negotiation ( #1564 )
2018-03-13 14:29:32 -07:00
David Fowler
adb760210d
Minimal reaction to proto abstractions changes ( #1583 )
...
- Doesn't consume new feature interfaces yet.
2018-03-13 10:24:08 -07:00
James Newton-King
974eb28b8b
Hub method reflection caching and invocation benchmarks ( #1574 )
2018-03-13 10:30:45 +13:00
James Newton-King
d816c6ef60
Add additional properties to HttpOptions ( #1557 )
2018-03-13 09:46:34 +13:00
BrennanConroy
489bd80b88
Remove threshold from client SSE pipe ( #1577 )
2018-03-12 12:50:42 -07:00
Mikael Mengistu
0b81658850
Add SignalR Marker Service ( #1573 )
2018-03-10 00:58:57 +00:00
James Newton-King
d6178f2482
Fixed streaming hub method with ValueTask ( #1572 )
2018-03-10 12:31:38 +13:00
BrennanConroy
d941a4be09
Workaround automatic Http2 upgrade in POSTs ( #1571 )
2018-03-09 11:43:59 -08:00
Pavel Krymets
4a4efe0f39
Update to new corefx ( #1561 )
2018-03-08 14:23:20 -08:00
Mikael Mengistu
adbd964efd
Transport Fallback ( #1455 )
2018-03-08 06:49:03 +00:00
James Newton-King
a41bf6228f
Client sends user agent with version based on assembly version ( #1551 )
2018-03-08 10:25:12 +13:00
James Newton-King
1c44e8febf
Fix streaming hub methods combined with async ( #1544 )
2018-03-07 20:07:06 +13:00
Mikael Mengistu
1b9313287b
Restrict HubProtocol on Server + HubOptions<THub> ( #1492 )
2018-03-07 01:31:56 +00:00
James Newton-King
846432c9ac
Improve unexpected server error message to client ( #1532 )
...
* Improve unexpected server error message to client
* Separated expected vs unexpected errors in error message. Fixed broken tests
* Fix ts functional tests
2018-03-06 22:11:46 +13:00
BrennanConroy
569c31bc62
Add some more logging ( #1510 )
2018-02-28 14:11:59 -08:00
Pavel Krymets
8908eec6e7
Pipelines in corefx ( #1501 )
2018-02-28 12:42:01 -08:00
Andrew Stanton-Nurse
13b25ec518
Reduce detailed payload logs to trace ( #1515 )
2018-02-28 10:46:44 -08:00
BrennanConroy
1790d6bdf0
Serialize once per format to increase perf in broadcasting scenarios ( #1498 )
2018-02-27 14:55:00 -08:00
BrennanConroy
8594d2b897
Use Threadpool for pipe scheduler ( #1497 )
2018-02-26 14:07:46 -08:00
David Fowler
b60e4cfea6
Removing remnants from the days of OPTIONS ( #1495 )
2018-02-26 14:05:55 -08:00
Mikael Mengistu
0e4731e480
Expose Transport and Application Max Buffer Sizes ( #1473 )
2018-02-25 08:47:14 +00:00
Andrew Stanton-Nurse
6a2d41cc9f
Fix #924 by introducing HubDispatcher abstraction ( #1479 )
2018-02-22 20:59:34 -08:00
David Fowler
32baa655b9
Do over the websocket transport ( #1481 )
...
* Do over the websocket transport
- Unify client and server logic (no code sharing yet)
- Removed use of cancellation tokens to communicate shutdown and instead used the pipe reader and socket abort.
- Added CloseTimeout to HttpOptions
2018-02-22 15:19:25 -08:00
David Fowler
c8d4cf689f
Tackling some low hanging performance fruit ( #1470 )
...
* Tackling some low hanging performance fruit
- Use native Memory/Span APIs on Stream and WebSocket in .NET Core 2.1
- Remove double copying in formatters
- Implemented custom HttpContent over ReadOnlyBuffer<byte>
2018-02-20 13:50:31 -08:00
David Fowler
a2ac9c573e
Added try finally to semaphore release ( #1469 )
2018-02-18 12:37:42 -08:00
David Fowler
e1bb2215e5
Remove the Channel<HubMessage> from the HubConnectionContext ( #1468 )
...
* Remove the Channel<HubMessage> from the HubConnectionContext
- Replace the channel with a single lock around the pipewriter. Since writes are always synchronous, the lock is held for a very short time.
- We were only using them in this scenario for handling multiple producers (the hub output, the keep alive ping and the broadcast).
- Handle the scenario where there's back pressure (when we use pipes that are bounded) and give callers a single task representing when back pressure is released.
- Handle synchronous exceptions in RedisHubLifetimeManager
- Fixed benchmarks
2018-02-17 10:22:11 -08:00
David Fowler
de7faec246
Pass the array segment offset to WriteAsync ( #1467 )
2018-02-17 01:26:07 -08:00
BrennanConroy
3acd29ec6f
Revert "Fix flaky SSE test ( #1279 )"
...
This reverts commit 6fcf554c23 .
2018-02-16 19:01:54 -08:00
BrennanConroy
a513386f68
Somehow the token didn't get passed into the reader ( #1465 )
2018-02-16 16:23:15 -08:00
BrennanConroy
6fcf554c23
Fix flaky SSE test ( #1279 )
2018-02-15 09:56:02 -08:00
Dona278
551158c239
Fixed exception during deserialization of a message with Redis ( #1426 )
...
Changed wrong message type used during deserialization in "SubscribeToUser"
2018-02-14 11:30:32 -08:00
BrennanConroy
d9b32ee323
Logging invocations with errors would throw inside logger ( #1445 )
2018-02-13 14:57:21 -08:00
David Fowler
ae998ba172
Remove unneeded dependencies ( #1443 )
2018-02-12 23:58:44 -08:00
David Fowler
6c22f25818
Client pipelines ( #1435 )
...
- Reworked the Client to be based on pipelines instead of Channels
- SendAsync no longer fails if the http request itself fails but the connection is closed as a result.
- Updated tests
- Base64Encoder needed to support multiple messages in the same span of data
2018-02-12 22:27:43 -08:00
David Fowler
3934ffd5af
Cleanup some dead code ( #1434 )
...
- Rename SocketBuilder to ConnectionBuilder
- Removed ChannelReaderExtensions
2018-02-10 22:16:30 -08:00
David Fowler
4c08acd8a4
Don't allocate all the memory up front when receiving incoming sends ( #1433 )
2018-02-10 20:52:00 -08:00
David Fowler
94155b0e89
Use protocol.abstractions primitives instead of socket abstractions ( #1432 )
2018-02-10 18:10:09 -08:00
David Fowler
342c4c44f6
Change namespace to avoid conflict
2018-02-10 12:44:55 -08:00
David Fowler
3e568588d2
Revert "Use protocol.abstractions primitives instead of socket abstractions ( #1429 )" ( #1431 )
...
This reverts commit e3f197cef0 .
2018-02-10 11:30:41 -08:00
David Fowler
e3f197cef0
Use protocol.abstractions primitives instead of socket abstractions ( #1429 )
2018-02-10 10:45:07 -08:00
David Fowler
2ed78d5762
Don't expose Channel from HubConnectionContext ( #1428 )
...
- Change HubEndPoint to call WriteAsync
- Fixed assert for protocol reader writer
2018-02-09 22:00:28 -08:00
David Fowler
28439d1441
Initial changes to move to pipelines ( #1424 )
...
- Change the Sockets abstraction from Channel<byte[]> to pipelines.
#615
2018-02-09 17:45:21 -08:00
Andrew Stanton-Nurse
0435b6dc6e
add headers and revamp msgpack tests ( #1382 )
2018-02-07 09:36:29 -08:00
Andrew Stanton-Nurse
b61dc35ee6
fix #1199 by suppressing ODE in received callback ( #1395 )
2018-02-01 15:08:52 -08:00
BrennanConroy
8cecca07a2
Fix race in Restart during Close task ( #1263 )
2018-01-31 15:51:33 -08:00
Pavel Krymets
9482b4976e
Merget release/2.1
2018-01-30 09:48:13 -08:00
Mikael Mengistu
e214d5cdfa
Reduce LongPolling timeout to accommodate Cloudflare's timeout ( #1368 )
...
* Reduce LongPolling timeout to accommodate Cloudflare's timeout
2018-01-29 23:55:08 -08:00
Pavel Krymets
ac9db5dc7b
React to pipeline changes ( #1365 )
2018-01-29 14:36:03 -08:00
BrennanConroy
96a3a03de8
Fix incorrect content-type ( #1347 )
2018-01-25 10:38:27 -08:00
BrennanConroy
67c76287ed
Return stream method error to client ( #1331 )
...
* Return correct error to client from failing stream method
2018-01-24 09:08:27 -08:00
Mikael Mengistu
40e906f23a
Expose IHttpConnectionFeature properties ( #1338 )
2018-01-23 18:25:53 -08:00
BrennanConroy
b088eaa91f
Rename JwtBearer to AccessToken in C# Client ( #1333 )
2018-01-22 16:05:51 -08:00
BrennanConroy
a449345436
Clean up logging ( #1308 )
2018-01-22 09:37:53 -08:00
BrennanConroy
d38764a8f0
Rename InvokeAsync to SendAsync on the server ( #1312 )
2018-01-19 11:32:50 -08:00
BrennanConroy
dfe0697f06
EventId starts at 1 for logging ( #1318 )
2018-01-18 16:11:43 -08:00
Pawel Kadluczka
68aa609650
Setting ContentType in the HTTP responses ( #1149 )
...
* Also making auth test work in IE
2018-01-16 11:28:20 -08:00
Andrew Stanton-Nurse
7c635fae56
remove System.IO.Pipelines.Extensions dependency and internalize code ( #1288 )
2018-01-11 14:10:29 -08:00
Josh Williams
0311f9b415
Throw InvalidDataException instead of FormatException in NegotationProtocol ( #1246 )
...
* Throw InvalidDataException instead of FormatException in NegotationProtocol
- Modify NegotiationProtocol to throw InvalidDataException
- Update NegotiationProtocolTests expectations
- Remove test case for InlineData "Missing required property 'protocol'"
- Update JsonHubProtocol & JsonUtils to throw InvalidDataException
- Update corresponding test expectations
- Add back removed test
Addresses #1203
2018-01-11 13:23:30 -08:00
Andrew Stanton-Nurse
a9d643a93e
remove dependency on system.buffers.primitives ( #1287 )
2018-01-11 11:28:08 -08:00
Andrew Stanton-Nurse
144984e599
Split MsgPack into separate assembly ( #1274 )
2018-01-10 14:20:57 -08:00
Mikael Mengistu
89b532c985
Invoke Users ( #1257 )
2018-01-08 17:58:42 -08:00
Mikael Mengistu
8b34b7f2ae
Invoke Multiple Groups ( #1254 )
2018-01-05 13:57:19 -08:00
Mikael Mengistu
e1f9a65083
MultipleClients -> Clients ( #1269 )
2018-01-05 12:07:26 -08:00
Pavel Krymets
8a4adf1cb6
React to pipeline changes ( #1250 )
...
React to pipeline changes
2018-01-04 09:56:39 -08:00
BrennanConroy
d5d159eb5f
Lock around heartbeat handler ( #1264 )
2018-01-03 12:29:25 -08:00
Mikael Mengistu
6baee8b7a9
Refactor HubContext to not Implement IHubClients ( #1262 )
2018-01-02 17:26:10 -08:00
Mikael Mengistu
738617266e
Invoke Multiple Connections ( #1242 )
2017-12-21 15:19:43 -08:00
Andrew Stanton-Nurse
00a6dc983a
Fix #1170 by removing invocationId from non-blocking calls ( #1218 )
2017-12-19 10:40:58 -08:00
Mikael Mengistu
c8bd72be36
Others in Group ( #1230 )
2017-12-18 15:27:56 -08:00
Mikael Mengistu
eb2668e74e
AllExcept for Groups - GroupExcept ( #1204 )
2017-12-15 17:34:08 -08:00
Geovanny Alzate Sandoval
31ef3c49df
Makes MapHub and MapEndpoint consistent with other ASP.NET Core APIs using PathString. #1188
2017-12-13 09:14:36 -08:00
BrennanConroy
588d9cdb11
Use Utf8Parser instead of custom code ( #1200 )
2017-12-12 11:55:48 -08:00
Pawel Kadluczka
66ab939cff
Making HttpConnection restartable (C#) ( #1147 )
...
🎉
2017-12-12 10:08:42 -08:00
Mikael Mengistu
75e102f97a
Support for Others and Caller Client Subsets( #1192 )
2017-12-11 17:30:53 -08:00
Andrew Stanton-Nurse
a8330067c4
Implement #1157 by adding client timeout for C# client ( #1165 )
2017-12-07 14:54:41 -08:00
Andrew Stanton-Nurse
6e152e24e1
forgot a copyright header ( #1183 )
2017-12-05 16:51:24 -08:00
Andrew Stanton-Nurse
c1d2024864
Implement #1156 by having the server send Ping messages ( #1161 )
2017-12-04 14:43:27 -08:00
Andrew Stanton-Nurse
e4671392ec
Fix #1140 by plumbing WebSocketOptions up to HttpOptions ( #1174 )
2017-12-02 17:01:53 -08:00
Andrew Stanton-Nurse
3005337a9c
fix #625 by implementing HubMethodNameAttribute ( #1173 )
2017-12-01 09:48:26 -08:00
BrennanConroy
531c7cfba1
More micro benchmarks ( #1158 )
...
- Hub Protocol benchmark
- Broadcast benchmark
- Run benchmarks validation during builds
2017-11-28 15:39:58 -08:00
Pranav K
887e22ec07
Eclipse S.T.Tasks.Extension version referenced by S.T.Channels
2017-11-22 19:53:01 -08:00
Pawel Kadluczka
0bafb304c2
Adding support for JWT in the C# client
...
Fixes : #1018
(Bonus: also enabling passing headers)
2017-11-21 16:32:56 -08:00
BrennanConroy
93cbf4dbef
Change negotiate to POST ( #1122 )
2017-11-17 15:31:47 -08:00
Pawel Kadluczka
046553cfe4
Avoiding serializing to MemoryStream
2017-11-17 15:02:21 -08:00
Andrew Stanton-Nurse
cb3124be17
First pass at Keep Alive ( #1119 )
...
This adds the Ping message type and support for sending/receiving it in the Hub Protocols. It does not add the logic to transmit keep-alive frames.
2017-11-16 09:45:13 -08:00
Pawel Kadluczka
379160707f
Switching to new base64 APIs ( #1127 )
2017-11-16 09:20:40 -08:00