Peer Finder Role Peer Role Client Peer Finder

  • Slides: 56
Download presentation

Peer. Finder. Role = Peer. Role. Client; Peer. Finder. Role = Peer. Role. Host;

Peer. Finder. Role = Peer. Role. Client; Peer. Finder. Role = Peer. Role. Host;

Peer. Finder Networking Model Host Client

Peer. Finder Networking Model Host Client

Peer. Finder Host Client Peer. Finder. Role = Peer. Role. Host; Peer. Finder. Triggered.

Peer. Finder Host Client Peer. Finder. Role = Peer. Role. Host; Peer. Finder. Triggered. Connection. State. Changed += Triggered. Connection. State. Changed; Peer. Finder. Role = Peer. Role. Client; Peer. Finder. Connection. Requested += Connection. Requested; Peer. Finder. Start(); Peer. Finder. Triggered. Connection. State. Changed += Triggered. Connection. State. Changed; Peer. Finder. Start();

Finding players Host Client private async void Find. Peers() { progress. Bar. Visibility =

Finding players Host Client private async void Find. Peers() { progress. Bar. Visibility = Visibility. Visible; try { var peer. Info. Collection = await Peer. Find. All. Peers. Async(); Peer. Finder. Role = Peer. Role. Client; if (peer. Info. Collection. Count > 0) { // Display nearby clients in a list. . . Peer. Finder. Start(); // Wait for Host to find and invite client.

Connecting players Host Client – incoming connection request private async Task Connect. To. Peers(Peer.

Connecting players Host Client – incoming connection request private async Task Connect. To. Peers(Peer. Information peer) { progress. Bar. Visibility = Visibility. Visible; private async void Connection. Requested(object sender, Connection. Requested. Event. Args e) { List<string> existing. Invitations = new List<string>(); existing. Invitations. Add(e. Peer. Information. Display. Name); Stream. Socket s = await Peer. Finder. Connect. Async(peer); Connected. Peer temp = new Connected. Peer(peer. Display. Name); connected. Peers[temp] = new Socket. Reader. Writer(s, this); . . . start. Game. Button. Visibility = Visibility. Visible; } . . . Received. Invitations. Header. Text = "STOMP invitations : -)"; progress. Bar. Visibility = Visibility. Collapsed; }

Connecting players (continued) Host Client – connect devices // Host connecting to client. .

Connecting players (continued) Host Client – connect devices // Host connecting to client. . . // Navigate client to a new page - Waiting. For. Host. . . { back. Button. Visibility = Visibility. Collapsed; Waiting. For. Host. Parameters parameters = (Waiting. For. Host. Parameters)navigation. Parameter; Stream. Socket socket = await Peer. Finder. Connect. Async(parameters. peer); page. Title. Text = "Connected! Waiting for Host. . . "; . . . }

Connected. Players. Items. Add(peer. Display. Name);

Connected. Players. Items. Add(peer. Display. Name);

Tap and connect Host Client – connect devices private async void Triggered. Connection. State.

Tap and connect Host Client – connect devices private async void Triggered. Connection. State. Changed(object sender, Triggered. Connection. State. Changed. Event. Args e) { if (e. State == Triggered. Connect. State. Peer. Found) { // Show indeterminate progress UI } else if (e. State==Triggered. Connect. State. Completed) { socket = new Socket. Reader. Writer(e. Socket, this); } else if (e. State == Triggered. Connect. State. Completed) { Stream. Socket socket = e. Socket; Wait. For. Host(socket); } else if (e. State == Triggered. Connect. State. Failed) { // Inform Game Leader that connection failed } else if (e. State == Triggered. Connect. State. Failed) { // Inform challenger that connection failed } } }

Sending/Receiving data - timer Host Client private void Update. Time(Tick. Option option) { //

Sending/Receiving data - timer Host Client private void Update. Time(Tick. Option option) { // Decrement the timer by 1 second public async void Read. Message() { // Read incoming message from the socket uint bytes. Read = await data. Reader. Load. Async(sizeof(uint)); uint message. Length = data. Reader. Read. UInt 32(); foreach (Socket. Reader. Writer tempsocket in connected. Peers. Values) { string message = string. Format( "{0} {1}", Constants. Op. Code. Update. Client. Time, time. Left. To. String(@"m: ss")); tempsocket. Write. Message(message); } } bytes. Read = await data. Reader. Load. Async(message. Length); current. Message = data. Reader. Read. String(message. Length); . . . } private int Parse. Message() {. . . case Constants. Op. Code. Update. Client. Time: if (game. Page != null) game. Page. Update. Client. Time(words[1]); break;

http: //aka. ms/mobileservices

http: //aka. ms/mobileservices

http: //msdn. microsoft. com/en-us/library/windows/apps/windows. networking. proximity. peerfinder http: //aka. ms/mobileservices

http: //msdn. microsoft. com/en-us/library/windows/apps/windows. networking. proximity. peerfinder http: //aka. ms/mobileservices