Comments (2)
Replication steps:
- Start a client in both the web browser and on the ipad
- open performance monitor on the server add "Requests Executing"
- Direct each client to use the mouse tracking sample
- Ensure that the objective c client is using server sent events for the transport (explicitly set it)
- move the mouse to demonstrate a successful connection to the ipad
- allow the ipads connection to timeout. (all clients should be idle) for roughly 2 minutes
- notice how in perf mon a new executing request is added. not replaced as we would expect.
- when debugging with the c# client the number of executing requests decreases by 1 before the new one is added, this does not happen when using the objective c client
- Eventually, in iis if the hub is idle iis will prevent any new connection and require an iisreset
Notes:
- I have not been able to definitively determine if this issue is on the ios client side or resides in the server. All things point to the client since this is only an issue with the objective c clients and only with server sent events (long polling appears to work fine)
- My gut seems to point to the NSOutputStream object that is used in
AsyncStreamReader in ServerSentEvents.h
and created in[SRHttpHelper getAsync]
, this stream is closed when a timeout occurs but the timeout error occurs on the url connection and not the stream which might be part of the issue. - Something worth noting is that if new data is received (move the mouse) after one or more timeouts occur then the dangling connections are correctly cleaned up. Which is what could suggest that this is a server bug and not a client bug.
from signalr-objc.
I have done a test that removes the need for NSOutputStream and instead just processes the data directly, and the issue still persists. I think it is safe to rule out NSOutputStream as the culprit which after thinking about it more makes sense since the output stream is only used internally to store the NSData that is being received by the NSURLConnection. These findings indicate that either the NSURLConnection is not being closed properly or something is wrong server side
from signalr-objc.
Related Issues (20)
- SignalR ObjC wrapping response?
- Undefined symbols for architecture x86_64:"_OBJC_CLASS_$_SRConnection", referenced from:objc-class-ref in HOT 1
- There is a delay in receiving data from server
- iOS. CocoaPods fails: Unable to find the Xcode project SignalR-ObjC-feature-dev/SignalR.Client.ObjC/SignalR.Client.xcodeproj HOT 1
- A SRHubConnection multiple SRHubProxy connection fails HOT 3
- Use of undeclared identifier 'LOG_LEVEL_VERBOSE' in SRLog.h HOT 1
- Regarding ConnectionID HOT 1
- SRHubProxyInterface.invoke - completionHandler called twice HOT 2
- SignalR-ObjC error seek help HOT 1
- AFNetworking 3.0 upgrade compatibility. HOT 2
- Fatal Exception: NSInvalidArgumentException
- Can i Use this library with SignalR core HOT 1
- ServerSentEvents Transport fails to abort underlying connection if transport is timed out
- ServerSentEvents Transport fails to timeout on reconnect
- LongPolling transport fails to timeout on reconnect
- Connection failed to reconnect despite start transport was successful HOT 1
- Crash during parsing socket message HOT 17
- AFNetworking 4.0.0 required. New iOS Apps getting rejected due to UIWebview HOT 9
- BUG IN CLIENT OF LIBDISPATCH: dispatch_sync called on queue already owned by current thread
- AFNetworking 4.0.0 required, Archieve issue in Xcode 15.x (Working fine in debug)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from signalr-objc.