Commit Graph

397 Commits

Author SHA1 Message Date
Pawel Kadluczka 269e1d1b5e Merge branch 'rel/1.0.0-alpha1' into dev 2017-09-05 12:22:49 -07:00
Pawel Kadluczka ceff4bd7da Exceptions from user's event handlers should be caught and logged
Otherwise they can spoil event queue and make the client not raise the Received event anymore

Fixes: #818
2017-09-05 12:21:47 -07:00
Nate McMaster d3ae3abe2a Use PackageLineup to manage PackageReference versions 2017-09-01 16:34:32 -07:00
Mikael Mengistu 8ec2848646 AllExcept for Dynamic and Typed Hubs (#796) 2017-08-31 15:30:19 -07:00
Pawel Kadluczka 5dceaa8149 Adding Microsoft.AspNetCore.SignalR.Client 2017-08-31 10:10:02 -07:00
Pawel Kadluczka 36acebf9fb Renaming Microsoft.AspNetCore.SignalR.Client to Microsoft.AspNetCore.SignalR.Client.Core 2017-08-31 10:10:02 -07:00
Pawel Kadluczka 521eed1438 Renaming Microsoft.AspNetCore.SignalR.Http to Microsoft.AspNetCore.SignalR 2017-08-31 10:10:02 -07:00
Pawel Kadluczka fa1f7f0b13 Renaming Microsoft.AspNetCore.SignalR to Microsoft.AspNetCore.SignalR.Core 2017-08-31 10:10:02 -07:00
BrennanConroy b8d2d24b67 Log connection resets as trace not error (#799) 2017-08-30 14:57:26 -07:00
BrennanConroy 5ff5c38325 Add Group Add and Remove acks (#780) 2017-08-30 14:07:23 -07:00
Nate McMaster 9c0dc52d67 Use Directory.Build.props/targets 2017-08-29 10:17:20 -07:00
Mikael Mengistu b60e598277 Setting the User-Agent header (#759) 2017-08-27 16:35:28 -07:00
Mikael Mengistu a200cd46b1 Use ForceAsyncAwaiter to make sure we're not on the app SyncContext (#758) 2017-08-25 14:02:17 -07:00
Pawel Kadluczka bcd5a1bd6e Filtering out SSE tests for browsers with no EventSource 2017-08-24 15:33:24 -07:00
BrennanConroy a702713cd4 SignalR C# Client logging (#752) 2017-08-24 08:37:05 -07:00
BrennanConroy b8a936f2c1 Use IApplicationLifetime instead of IHostedService (#757) 2017-08-24 00:10:18 -07:00
BrennanConroy 978f5cebc0 Starting HubOptions (#743)
* Added JsonSerializerSettings
2017-08-23 15:30:08 -07:00
Mikael Mengistu d469cc3151 Clients Subset - AllExcept (#700) 2017-08-22 17:33:27 -07:00
BrennanConroy 345190e6a9 Add timeout to Negotiate (#736) 2017-08-18 15:51:01 -07:00
BrennanConroy a4053acd06 Give Client a chance to receive Close Frame from Server (#730) 2017-08-18 09:56:40 -07:00
Pawel Kadluczka 5ad5f36f88 Changing length prefixing to separator for JSON C# 2017-08-18 09:50:45 -07:00
BrennanConroy b12451025f Exit OnConnected early if Negotiate fails (#733) 2017-08-17 23:34:45 -07:00
Pawel Kadluczka a359da0c44 Length prefixing base64 encoded messages
... in preparation for pipeline conversion
2017-08-17 09:58:16 -07:00
Pawel Kadluczka 5b4cc95583 Removing unnecessary dependency 2017-08-17 09:30:57 -07:00
Pawel Kadluczka 4898c0d3df Integrating MsgPack support in TS client 2017-08-11 11:44:52 -07:00
Pawel Kadluczka 9eabce1b02 Enabling tests which would have prevented a bug 2017-08-11 11:22:45 -07:00
BrennanConroy b393200fd3 SSE StopAsync should ignore exception (handled elsewhere) (#708) 2017-08-10 14:18:34 -07:00
Mikael Mengistu eb008a0dfe Fix potential null ref in RedisHublifetimeManager RemoveGroup (#706) 2017-08-10 09:54:26 -07:00
Pawel Kadluczka e2cec0b305 Adding MsgPack hub protocol to TS client 2017-08-09 09:12:11 -07:00
moozzyk e089852d59 Turning messages to arrays
Makes it much easier to parse in JavaScript (also is more MsgPacky)
2017-08-09 09:12:11 -07:00
moozzyk be9fec5d30 Adding result kind to completion message
Before we would rely on error being null to detect whether to read results and we had an additional 'hasResult' field. Now all this information is codified in a field.
2017-08-09 09:12:11 -07:00
Mikael Mengistu 32ef3eb355 Hub<T> (#689) 2017-08-08 17:39:09 -07:00
Pawel Kadluczka 3a1d4c5dd6 Introducing HubProtocolReaderWriter 2017-08-08 12:11:55 -07:00
Pawel Kadluczka ad4784dbd2 Centralizing serializing hub messages 2017-08-08 12:11:55 -07:00
Pawel Kadluczka a0e490e549 Enabling binary protocols over text transports 2017-08-08 12:11:55 -07:00
Pawel Kadluczka f9ee7911a5 Use CloseOutputAsync to close client transport WebSocket (#695)
* Use CloseOutputAsync to close client transport WebSocket

Fixes #568
2017-08-08 11:31:24 -07:00
Hao Kung 6008b57d0f React to AuthZ change 2017-07-21 11:05:12 -07:00
Pawel Kadluczka ae815475b8 Support for binary protocols on the server side 2017-07-20 17:46:45 -07:00
Mikael Mengistu 8fc2cd98b6 Add timeout to Event Queue drain (#619) 2017-07-19 11:47:47 -07:00
BrennanConroy 3010eaaee2 Add logging scope (#670) 2017-07-18 16:13:06 -07:00
Mikael Mengistu 8ba29b578d Dynamic Hub Change Part 2 (#644) 2017-07-14 15:54:31 -07:00
Pawel Kadluczka 0ebd33a25c Plumbing TransferMode on the client side 2017-07-14 10:45:28 -07:00
Pawel Kadluczka 36ecbd9efd Accounting for ReadAsync throwing OperationCanceledException 2017-07-13 11:07:39 -07:00
Pawel Kadluczka 2854e868ec Adding tests for SSE transport #413 2017-07-13 09:14:03 -07:00
BrennanConroy bcefbae00c Complete logging for Socket.* packages (#655) 2017-07-12 16:16:09 -07:00
Pawel Kadluczka a41ef82f19 Exiting SSE transport receive loop when transport is stopping
Fixes: #650
2017-07-10 17:56:24 -07:00
David Fowler 595f783857 Features everywhere (#639)
* Features everywhere
- The goal here is to move things closer to the final design where
ConnectionContext represents a very low level primitive that represents
any connection like transport. As part of that change, we remove unnecessary
properties like User and move those into features. They temporarily live in the same
assembly but they are not required by ConnectionContext.
- Used features for Hubs instead of Metadata
- Metadata is no longer thread safe
2017-07-06 11:27:16 -07:00
David Fowler de21ce1637 Expose IGroupManager on IHubContext (#638)
- Adding groups is no longer coupled to the incoming connection
so we should expose it outside of the hub itself.
2017-07-05 23:50:54 -07:00
Mikael Mengistu 2597e52e53 Rename HubConnection Extension Methods from Invoke to InvokeAsync (#637) 2017-07-05 22:56:03 -07:00
Mikael Mengistu cfaa4b69d7 Dynamic Hub Work Part 1 (#636)
Getting rid of TClient
2017-07-05 22:55:16 -07:00
David Fowler f21f5039b2 Replace ConnectionContext with HubConnectionContext (#629)
* Replace ConnectionContext with HubConnectionContext
- The SocketDelegate implementation owns the transport pipe,
it's a single producer single consumer model. SignalR needs to support
multiple producers so that broadcast, return values and sending to individual
connections works. This change introduces a multi producer channel that is used
by all producers to copy data to the transport safely. This will make the move
to pipelines easier.
2017-07-03 17:44:28 -07:00
David Fowler 0f4295f90e Make parsers stateless (#628)
* Make parsers stateless
- Changed parser input to ReadOnlySpan<byte> to ReadOnlyBuffer<byte>
2017-07-01 23:44:22 -07:00
David Fowler 10b195bcce Move DefaultConnectionContext out of Sockets.Abstractions (#627) 2017-07-01 15:26:28 -07:00
Pranav K 08c04f8912 Fix NuGet downgrade warnings from CoreFxLab packages 2017-06-29 10:31:32 -07:00
Mikael Mengistu d68de2b5ea Make Client Side Event Handlers Async (#610) 2017-06-28 22:39:59 -07:00
David Fowler 6332e98d03 Remove Try from Write methods (#614)
- We write to a Stream so it should never fail (it could throw
but that's not new).
2017-06-28 21:53:23 -07:00
David Fowler d6f5e16f38 Support non blocking send on client (#603)
* Added support for non blocking sends on HubConnection
- Renamed Invoke to InvokeAsync
- Add support for non blocking send to TS client
- Add tests to make sure that non blocking sends don't send responses
2017-06-28 21:00:13 -07:00
Mikael Mengistu b2bc4e6207 Added a (Uri,HttpMessageHandler) ctor for HttpConnection (#609) 2017-06-28 15:24:55 -07:00
BrennanConroy dc29e98032 Support Authorize attribute on EndPoints (#606) 2017-06-28 14:52:52 -07:00
David Fowler ccf6cd415e Remove dependency on new compiler (temporarily) 2017-06-27 22:49:11 -07:00
Pawel Kadluczka f8d91b54d4 MsgPack end-to-end
Plugging in MsgPack protocol
Adding negotiation message to hub protocol
2017-06-27 18:40:55 -07:00
Pawel Kadluczka 71949129ea Enabling length prefixing, parsing multiple messages 2017-06-27 18:08:32 -07:00
Pawel Kadluczka 3504337918 Adding MsgPack HubProtocol 2017-06-27 17:35:00 -07:00
Mikael Mengistu 13ef35fa79 Changed the handlers to be Func<object[], Task> (#578) 2017-06-27 10:14:58 -07:00
BrennanConroy e36da30072 Ignore failed send after close (WebSockets) (#593) 2017-06-27 10:01:45 -07:00
David Fowler 9602787463 Fix broken SSE transport 2017-06-23 14:27:03 -07:00
BrennanConroy ef273b4796 Add authorization per hub method (#577) 2017-06-23 10:22:05 -07:00
David Fowler a84ba8820f Use Channel<byte[]> as the abstraction (#579)
* Use Channel<byte[]> as the abstraction
2017-06-23 09:52:35 -07:00
David Fowler 5234437af8 Remove unused dependency 2017-06-23 01:27:43 -07:00
David Fowler a34e4055cd Reduce pipelines dependency to just extensions 2017-06-22 09:43:21 -07:00
David Fowler 41f54d001b Remove dependencies on a bunch of corefxlab things (#576)
* Remove dependencies on a bunch of corefxlab things
- Used Stream instead of IOutput
- Removed pipelines dependency in most places.
2017-06-22 09:23:52 -07:00
BrennanConroy 0dd29b3050 Always close websocket on server (#567)
* refactor server websockets transport
2017-06-20 16:00:32 -07:00
BrennanConroy 0298868c00 Reorganize and add more logging to Sockets.Http (#549)
* Move Sockets.Transports to internal namespace
2017-06-15 08:24:43 -07:00
Hu Weiwen 40bef1bc78 Simplify delegate invoking (#565) 2017-06-15 07:45:32 +02:00
David Fowler ae21379736 Fixed 205 status code 2017-06-13 06:00:26 +02:00
David Fowler cde0aa741a Removed unused dependencies (#558) 2017-06-13 03:03:28 +02:00
BrennanConroy 3cabb6aeb1 Don't over-discover Hub methods (#511) 2017-06-12 14:26:33 -07:00
David Fowler 12917ef0e9 Re-layer the .NET Client into Http and non-Http (#544)
* Re-layer the .NET Client into Http and non-Http
- Moved IConnection to Sockets.Abstractions and removed
HttpConnection and TransportType dependency.
- Renamed Sockets.Client to Sockets.Client.Http
- Renamed Sockets.Common to Sockets.Common.Http
- Renamed Connection to HttpConnection
- Removed HTTP dependency from HubConnection
- Removed tests that were testing connection logic in HubConnection

#518
2017-06-09 08:58:54 -10:00
Mikael Mengistu 27979d835f Clean up GroupManager (#542) 2017-06-08 17:06:41 -07:00
David Fowler 523517f60c Add support for timing out poll requests (#538)
* Add support for timing out poll requests
- Default poll request is 110 seconds (like in previous versions of SignalR)
- Use 200 with a 0 content length for timeouts.
- Added support for not timing out while debugging
2017-06-07 20:55:00 -10:00
BrennanConroy 1fad901843 Fix inherited hub auth and added tests (#535) 2017-06-06 20:55:34 -10:00
Mikael Mengistu 680c48d584 Change Group Add and Remove API (#522) 2017-06-06 21:50:34 -04:00
Pawel Kadluczka a14a0ab039 Adding structured negotiate 2017-06-06 15:53:21 -07:00
BrennanConroy 4c4be7ed6f Add support for Hub Authorize Attribute (#532) 2017-06-06 15:46:08 -07:00
Nate McMaster fd7abb31e8 Lift M.ANC.Sockets.Common to .NET Standard 2.0 2017-06-06 15:28:27 -07:00
David Fowler d8583535c8 Remove unused code 2017-06-06 10:58:29 -07:00
David Fowler 59a8f5f3b5 Simplify the JSON and protobuf protocols (#524)
- Remove message type and message format
- Updated tests
2017-06-06 07:18:23 -10:00
David Fowler 38efde7b50 Merge transport and hub protocols (#517)
* Merge transport and hub protocols
- This change merges the transport and hub protocols into a single protocol. The
idea being that sockets in a purely streaming layer that sends frames from the underlying
transport. This makes things like TCP possible and doesn't impose a framing layer at the lowest
level. This will make it possible to build servers like kestrel on top of the TCP layer.
- The Message was removed from the lowest layer of the stack and pushed into the hubs layer. Hub invocations
are framed with what was before the transport protocol. Connections also need to state upfront if they support
binary or not. This will determine how data will be serialized to the specific connection.
- Changed the SSE parser and writer to be strictly SSE without any of the transport protocol specific
information.
- To ensure we aren't using types in the wrong layers
- Moved protocol logic into SignalR
- Socket.Abstractions is now the root of the universe, Sockets.Common will likely be removed
or turned into Sockets.Common.Http.
- Move SSE parser to Sockets.Client and SSE writer into Sockets.Http
- Moved tests into the appropriate test projects
- Updated the spec
2017-06-05 09:45:40 -10:00
David Fowler 831fa72893 Remove the RequestId from DefaultConnectionContext (#516)
* Remove the RequestId from DefaultConnectionContext
- Added a GetHttpContext() extension method on ConnectionContext
- Also fixed an issue not setting LastSeenUtc
2017-06-03 22:05:44 -10:00
Kiran Challa 7de91da37d Merge branch 'rel/2.0.0-preview2' into dev 2017-06-03 19:28:28 -07:00
David Fowler b77f50a99a Merge DefaultConnectionContext with ConnectionState (#514)
* Merge DefaultConnectionContext with ConnectionState
- Removed ConnectionState as a result
2017-06-03 12:14:01 -10:00
David Fowler 42e2715a95 Removed EndOfMessage from Message (#513)
* Removed EndOfMessage from Message
- The webSockets transport no longer supports partial payloads so
this feature is now gone.
2017-06-03 08:32:28 -10:00
David Fowler 72423ee203 Removed custom websocket implementation (#507)
- Use the default websocket middleware
- Rewrote TestWebSocketConnectionFeature to use Channels instead of pipes
2017-06-03 06:53:39 -10:00
BrennanConroy 52f2104c78 React to Base64 API changes 2017-06-02 20:40:06 -07:00
David Fowler d10a6293bd Discover hub methods at startup time (#503)
* Discover hub methods at startup time
- Errors will show up earlier as a result instead of cryptic
first connect errors.
2017-06-01 09:47:39 -10:00
Pawel Kadluczka e31fc1e57d Closing transports with error if hubs cannot be created
- Preventing from closing long polling transport with 204 in case of
error
- Reporting an error to the client if WebSocket was not closed normally

Note in case of ServerSentEvents it is not possible on the client to
tell the difference between when the server closed event stream due to
an exception or because the client left OnConnectedAsync. In both cases
the client sees only that the stream was closed.

Part of: #163
2017-05-31 16:29:28 -07:00
Andrew Stanton-Nurse 263dd0e4fe Fix #324 by adding streaming support to the server (#461) 2017-05-31 09:10:20 -07:00
BrennanConroy 762d52133c Change Base64 to Base64Encoder (#492) 2017-05-26 17:48:36 -07:00
Mikael Mengistu b862d35b10 Update Targets (#486) 2017-05-26 20:00:12 -04:00
John Luo 47ac4e5bf9 React to Hosting changes 2017-05-26 10:53:10 -07:00