38 lines
914 B
Swift
38 lines
914 B
Swift
import MultipeerConnectivity
|
|
import Foundation
|
|
|
|
@Observable
|
|
final class NoteEditingSessionServer: NSObject {
|
|
private let session: MCSession
|
|
private let browser: MCNearbyServiceBrowser
|
|
|
|
init(username: String) {
|
|
let peer = MCPeerID(displayName: username)
|
|
browser = .init(peer: peer, serviceType: "peered")
|
|
session = .init(peer: peer)
|
|
super.init()
|
|
browser.delegate = self
|
|
}
|
|
|
|
func startServer() {
|
|
browser.startBrowsingForPeers()
|
|
}
|
|
|
|
func stopServer() {
|
|
browser.stopBrowsingForPeers()
|
|
}
|
|
}
|
|
|
|
extension NoteEditingSessionServer: MCNearbyServiceBrowserDelegate {
|
|
func browser(
|
|
_ browser: MCNearbyServiceBrowser,
|
|
foundPeer peerID: MCPeerID,
|
|
withDiscoveryInfo info: [String : String]?
|
|
) {
|
|
browser.invitePeer(peerID, to: session, withContext: nil, timeout: 30)
|
|
print("seeing peer \(peerID.displayName)")
|
|
}
|
|
|
|
func browser(_ browser: MCNearbyServiceBrowser, lostPeer peerID: MCPeerID) {}
|
|
}
|