Enables you to discover another instance of your app on a nearby device and create a socket connection between the peer apps by using a tap gesture or by browsing.
Syntax
var peerFinder = Windows.Networking.Proximity.PeerFinder;
Attributes
- MarshalingBehaviorAttribute(Agile)
- StaticAttribute(Windows.Networking.Proximity.IPeerFinderStatics, NTDDI_WIN8)
- ThreadingAttribute(Both)
- VersionAttribute(NTDDI_WIN8)
Members
The PeerFinder class has these types of members:
Events
The PeerFinder class has these events.
| Event | Description |
|---|---|
| ConnectionRequested | Occurs when a remote peer requests a connection using the ConnectAsync method. |
| TriggeredConnectionStateChanged | Occurs during a tap gesture from a remote peer. |
Methods
The PeerFinder class has these methods. With C#, Visual Basic, and C++, it also inherits methods from the Object class.
| Method | Description |
|---|---|
| ConnectAsync | Connects to a peer discovered by a call to the FindAllPeersAsync method. |
| FindAllPeersAsync | Asynchronously browses for peer computers that are running the same app within wireless range. |
| Start() | Starts the process of finding peer apps and makes an app discoverable to remote peers. |
| Start(String) | Delivers a message to a peer app on a proximate device. |
| Stop | Stops the process of finding peer apps or advertising for a peer connection. |
Properties
The PeerFinder class has these properties.
| Property | Access type | Description |
|---|---|---|
| Read/write | Specifies whether the PeerFinder class may connect a StreamSocket object by using Bluetooth. | |
| Read/write | Specifies whether the PeerFinder class may connect to a StreamSocket object using TCP/IP. | |
| Read/write | Specifies whether the PeerFinder class may connect a StreamSocket object by using Wi-Fi Direct. | |
| Read-only | Gets a list of alternate appId values to match with peer applications on other platforms. | |
| Read/write | Gets or sets the name that identifies your computer to remote peers. | |
| Read-only | Gets a value that indicates which discovery options are available to use with the PeerFinder class. |
Examples
var started = false; // Click event for "Advertise" button. function advertiseForPeers(launchedFromTap) { Windows.Networking.Proximity.PeerFinder.displayName = displayNameTextBox.Text; if (Windows.Networking.Proximity.PeerFinder.supportedDiscoveryTypes & Windows.Networking.Proximity.PeerDiscoveryTypes.triggered) { Windows.Networking.Proximity.PeerFinder.addEventListener( "triggeredconnectionstatechanged", triggeredConnectionStateChanged); id("messageDiv").innerHTML += "You can tap to connect a peer device that is " + "also advertising for a connection.<br />"; } else { id("messageDiv").innerHTML += "Tap to connect is not supported.<br />"; } if (!launchedFromTap) { if (!(Windows.Networking.Proximity.PeerFinder.SupportedDiscoveryTypes & Windows.Networking.Proximity.PeerDiscoveryTypes.Browse)) { id("messageDiv").innerHTML += "Peer discovery using Wifi-Direct is not supported.<br />"; } } if (!started) { Windows.Networking.Proximity.PeerFinder.start(); started = true; } } function triggeredConnectionStateChanged(e) { if (e.state === Windows.Networking.Proximity.TriggeredConnectState.peerFound) { id("messageDiv").innerHTML += "Peer found. You may now pull your devices out of proximity.<br />"; } if (e.state === Windows.Networking.Proximity.TriggeredConnectState.completed) { id("messageDiv").innerHTML += "Connected. You may now send a message.<br />"; sendMessage(e.socket); } } // Click event for "Browse" button. function findPeers() { if (Windows.Networking.Proximity.PeerFinder.supportedDiscoveryTypes & Windows.Networking.Proximity.PeerDiscoveryTypes.browse) { Windows.Networking.Proximity.PeerFinder.findAllPeersAsync().done( function (peerInfoCollection) { if (peerInfoCollection.length > 0) { // Connect to first peer found - example only. // In your app, provide the user with a list of available peers. connectToPeer(peerInfoCollection[0]); } }, function (err) { id("messageDiv").innerHTML += "Error finding peers: " + err + "<br />"; }); } else { id("messageDiv").innerHTML += "Peer discovery using Wi-Fi Direct is not supported.<br />"; } } function connectToPeer(peerInfo) { id("messageDiv").innerHTML += ("Peer found. Connecting to " + peerInfo.displayName + "<br />"); Windows.Networking.Proximity.PeerFinder.connectAsync(peerInfo).done( function (socket) { id("messageDiv").innerHTML += "Connection successful. You may now send messages.<br />"; sendMessage(socket); }, function (err) { id("messageDiv").innerHTML += "Connection failed: " + err + "<br />"; }); requestingPeer = null; } function stopFindingPeers() { Windows.Networking.Proximity.PeerFinder.stop(); started = false; if (proximitySocket != null) { closeSocket(); } } // Handle external connection requests. var requestingPeer; function connectionRequested(e) { id("messageDiv").innerHTML += "Connection requested by " + e.peerInformation.DisplayName + ". " + "Click 'Accept Connection' to connect."; requestingPeer = e.PeerInformation; } function acceptConnection() { if (requestingPeer == null) { id("messageDiv").innerHTML += "No peer connection has been requested."; return; } connectToPeer(requestingPeer); }
Requirements
|
Minimum supported client | Windows 8 [Windows Store apps only] |
|---|---|
|
Minimum supported server | Windows Server 2012 [Windows Store apps only] |
|
Minimum supported phone | Windows Phone 8 |
|
Namespace |
|
|
Metadata |
|
|
Capabilities |
|
See also
Build date: 2/25/2013