Comments (12)
I found that problem is in Advertiser class in didReceiveInvitationFromPeer handler:
let accept = mcSession.myPeerID.hashValue > peerID.hashValue
Most of the time it resolves to "false" which lead to disconnection. If I change it to "true" peers connecting successfully all the time.
@jpsim can you please review this line? Why current peerID hash should be greater then external peerID hash for accepting connection?
from peerkit.
I think the main problem with current implementation is when peers first connected then disconnected, they won't connect again. Because when after they accept the invitation, advertiser.stopAdvertising(). So I added a state property in Session and re-start advertising when disconnect.
from peerkit.
Also seeing this behavior -- any updates?
from peerkit.
Can you confirm that the problem is with PeerKit rather than Multipeer Connectivity? MPC itself isn't necessarily a paragon of reliability.
from peerkit.
Fair point; will investigate MPC directly.
Any guidance on @sudeepag 's question:
"Also, what is the procedure to attempt a reconnection after the connection is unsuccessful? Should I call .transceive again after creating a new Transceiver?"
from peerkit.
I'm not sure, I haven't touched PeerKit in a while.
from peerkit.
@danshev Any progress on this? I'm noticing the same issue with my own app, though I used the ConnectionManager struct from Cards Against.
from peerkit.
@dkun7944 unfortunately, I concluded it was the general unreliability of the MPC framework.
from peerkit.
๐
from peerkit.
I ran into similar problems, and eventually traced it back to the same place that @pdyakov did... my guess is that this test might be here to prevent an Advertiser from accepting an invitation from a Browser that was running on the same device (as in the case of transceiving)? If so, it should probably be comparing the hashValue
of myPeerID
/peerID
's displayName
properties. I've made that change in my local version of PeerKit, and it seems to be helping quite a lot, but am not confident enough in my understanding of the issue to submit a pull request. @jpsim, I'd be happy to do so if my reasoning is correct.
from peerkit.
I believe this is to fix a problem in iOS7 https://developer.apple.com/library/content/qa/qa1869/_index.html
If you don't need to support iOS 7 you can just accept invitation.
from peerkit.
That certainly does appear to be the explanation, thanks, @qiulang!
from peerkit.
Related Issues (15)
- Feature Request - OS X Support HOT 2
- Distribute through CocoaPods HOT 2
- multipeer connectivity framework can detect in the background๏ผ HOT 3
- You need to update the lib to Swift 2.2 HOT 1
- Problems with Xcode 7.3 Swift 2.2 HOT 1
- Any update for support Swift 3 HOT 4
- Question HOT 1
- Better README HOT 2
- Support of swift 4 HOT 4
- File exchange HOT 1
- PeerKit performances
- Update Swift Compiler
- Does this framework work with more than two device? HOT 1
- transfer speed is slow
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 peerkit.