Commit Graph

527 Commits

Author SHA1 Message Date
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
BrennanConroy 5d8aa1ee2a
Fix a couple flaky tests (#1116) 2017-11-14 14:44:15 -08:00
BrennanConroy 9789e09cfb
Adding EventSource/EventCounters to Sockets (#1083) 2017-11-14 09:04:35 -08:00
BrennanConroy 792745ad98 React to CoreFxLab packages (#998) 2017-11-13 15:05:35 -08:00
Pawel Kadluczka ff12b9b20c Replacing StreamCompletion with StreamInvocation 2017-11-13 10:50:15 -08:00
Mikael Mengistu 1a21fd49b1
Changing the Closed Event to be a Task (#1080) 2017-11-09 17:51:13 -08:00
Pawel Kadluczka 06475270ec
Actually throwing exceptions from SendAsync (#1084)
SendAsync was using InvokeCoreAsync code to send messages. In case of exception InvokeCoreAsync is blocking and returns a task to the user so they can await for the remote call to complete. Any exception thrown is caught and used to fail the task returned to the user. SendAsync does not return a special task to the user so re-using InvokeCore resulted in swallowing exceptions. While SendAsync is fire and forget it actually should throw if the message could not be send and it was not happening.

While adding tests it turned out we did not test cases where Invoke/SendAsync/StreamAsync were invoked before starting the connection and this resulted in a NullReferenceException. I also fixed that.
2017-11-03 13:15:11 -07:00
BrennanConroy 9371e7b50a
[Redis] Reorder some code to make it less spaghetti (#1081) 2017-11-02 18:38:20 -07:00
Pawel Kadluczka cc42b0eaef Fixing a bug where cancellation could result in HubException
When the client cancels a streaming method the server would send an error completion. This was not correct because cancellation is not an error. We did not see this because our client ignores any messages for a given streaming invocation after sending a CancelInvokationMessage but other clients may want to drain messages before considering a streaming method canceled.
2017-11-01 20:20:43 -07:00
BrennanConroy 8c446fc02d
[Redis] Save a few bytes for acks (#1070) 2017-11-01 16:48:36 -07:00
Nate McMaster e15a38a14c Pin package and tool versions to make build more repeatable 2017-11-01 16:40:51 -07:00
BrennanConroy 2419867dfc
Handle errors in Redis subscription callbacks (#1069) 2017-11-01 10:29:02 -07:00
BrennanConroy 83bb07d5a4
Fix parameter name (#1066) 2017-10-30 12:55:12 -07:00
Pawel Kadluczka 18f770e937
Late parameter binding (#1049)
Late parameter binding

Storing exception thrown during parameter binding and rethrowing when the method is about to throw. This allows completing invocations with a HubException and keeping the connection open.
We will also no longer close the connection if parameters for client side methods cannot be bound. We will log and continue.

Fixes: #818

(Also fixing #1005 because I was just touching this line)
2017-10-30 11:31:57 -07:00
BrennanConroy 30e7422407 Enable reconnect for Redis connection by default (#1037) 2017-10-24 14:30:13 -07:00
Mikael Mengistu 1768a081ba Updating default pattern(#1046) 2017-10-23 22:20:31 -07:00
Pawel Kadluczka caff492cdc Removing sending OPTIONS request if WebSocket transport requested (#1036)
Removing sending OPTIONS request if WebSocket transport requested

This removes session stickiness requirement for WebSockets

Fixes: #1035
2017-10-23 10:28:33 -07:00
BrennanConroy 9cc5d13a40 [Redis] Adding same group to connection multiple times should NOP (#1040)
* Added some additional tests too
2017-10-20 14:29:08 -07:00
Pawel Kadluczka 8d1d6d0300 Adding StreamCompletion message (C#) 2017-10-19 18:20:03 -07:00
Mikael Mengistu 04d4da2987 Replace Received Event with OnReceived (#1006) 2017-10-18 17:10:51 -07:00
BrennanConroy bb308ff72e LoggerDefine for Redis (#1002) 2017-10-18 10:46:03 -07:00
Gurgen Hakobyan b3ac9f4bf8 Not very important code optimization (#1030)
Code optimization
2017-10-18 09:23:32 -07:00
BrennanConroy 0e70c7950b Adding Redis Unit tests (#1013) 2017-10-17 15:48:29 -07:00
BrennanConroy 878a70226c [Redis] Remove groups properly from connection diconnection (#1010)
And properly short circuit group actions for local connections
2017-10-17 14:15:00 -07:00
gurgen af286c81bb Groups collection without lock 2017-10-17 12:06:05 -07:00
BrennanConroy de34990241 Short Circuit message to local connection in Redis (#1009) 2017-10-11 13:17:49 -07:00
BrennanConroy 8701baf73d Add negotiate timeout option to hub options (#1003) 2017-10-11 08:59:37 -07:00
BrennanConroy de2e0967c3 Adding CancelInvocation message (#979)
* For Streaming only. And C# client only.
2017-10-06 15:55:39 -07:00
ivankarpey 665f166d67 fix issue with incorrect user detection when Invoking for User (#747)
* fix issue with incorrect user detection when Invoking for User

* fix failed testcases

* use proper extension method to avoid potential null reference exception

* fix for channel name in redis version + follow SignalR team recommendations

* remove unncessary freespace

* remove whitespaces

* introduce IUserIdProvider to resolve user id

* Move IUserIdProvider from HubLifetimeManager to HubConnectionContext

* setting user id to connection context in hubendpoint
2017-10-06 11:58:18 -07:00
Kai Ruhnau 3c5d283689 Fix the VarInt example for the 2GiB
`0x7fffffff` has 31 binary ones. The first four bytes of the VarInt account for 4*7=28, so the fifth byte only needs the remaining three
2017-10-06 10:38:21 -07:00
Mikael Mengistu 72514f3943 Removing the connected event (#989) 2017-10-05 11:12:18 -07:00
Pawel Kadluczka 7c90e80b3f Merge branch 'rel/1.0.0-alpha2' into dev 2017-10-02 10:07:16 -07:00
Pawel Kadluczka 70df19c8a2 Fixing MsgPack serializing byte[] as string Part 1
Enabling sending byte[] from server to client.
2017-09-29 17:05:24 -07:00
Pawel Kadluczka 05da66ada0 Merge branch 'rel/1.0.0-alpha2' into dev 2017-09-28 17:52:25 -07:00
Pawel Kadluczka 4f4fb174ea Replacing 8-byte-long length prefix with varint 2017-09-28 17:00:49 -07:00
David Fowler 2adf24d1c6 Merge branch 'rel/1.0.0-alpha2' into dev 2017-09-25 23:44:25 -07:00
David Fowler e17cdae046 Added overloads from 0-n arguments (#949)
- Added 0 arg overload for InvokeAsync
2017-09-25 23:42:05 -07:00
David Fowler 9df8d2f795 Remove the params argument from IClientProxy (#946)
* Remove the params argument from IClientProxy
- This allows passing arrays without having to explicitly ToArray() or AsEnumerable()
- Added overloads up to 10 arguments
- Added tests
2017-09-25 21:01:52 -07:00
David Fowler 000f9cb192 Initial support for websocket subprotocols (#933)
* Initial support for websocket subprotocols
- Exposes a SubProtocol property on WebSocketOptions that picks the
protocol for all connections on the end point.
- This is required for things like mqtt over websockets (the SubProtocol in
this case is something like mqtt or mqttv3.1)
- Added test

#402
2017-09-25 15:17:45 -07:00
David Fowler 5497c7d4ce Merge branch 'rel/1.0.0-alpha2' into dev 2017-09-25 08:31:02 -07:00
David Fowler 26255cc29c Check for null before sending to a specific connection id (#935)
* Check for null before sending to a specific connection id
- Added some tests for the DefaultHubLifetimeManager

#905
2017-09-25 08:26:24 -07:00
moozzyk c0713c9916 Merge branch 'rel/1.0.0-alpha2' into dev 2017-09-25 08:17:27 -07:00
Pawel Kadluczka 0267695656 Exceptions thrown during writing should close the connection
We need to close the connection if there is an exception when writing to the transport on the server side. Currently if an exception happens it leaves the connection in an unsable state - after the exception no messages from the server will be sent to the client because the writing loop is terminated. Ignoring the message could cause hangs on the client side since we can fail while writing a completion message. In this case if the client is awaiting the invocation it will hang because the task will never be completed.
2017-09-25 08:13:46 -07:00
David Fowler 65cd41dbf5 Block POST requests for websocket connections (#934) 2017-09-23 17:49:19 -07:00
Pawel Kadluczka 8743723ece Merge branch 'rel/1.0.0-alpha2' into dev 2017-09-21 23:00:20 -07:00
Pawel Kadluczka 4db78685dc camelCasing objects serialized by JsonHubProtocol
Fixes: #859
2017-09-21 22:58:59 -07:00
Pawel Kadluczka 6ed3f6d1aa Enabling hub connection with customized hub protocols 2017-09-21 22:57:07 -07:00
Andrew Stanton-Nurse 786980bc3f add names to EventIds used by logger extensions (#927) 2017-09-21 17:36:50 -07:00
Pawel Kadluczka 126901a08f Adding default ctors for HubProtocols 2017-09-21 15:30:23 -07:00
Pawel Kadluczka ba25dee141 Enabling customizing serialization settings in MessagePack protocol 2017-09-21 15:30:23 -07:00
Tim Seaward bcda95353e Remove extra span (#922) 2017-09-21 03:30:05 -07:00