Presentation is loading. Please wait.

Presentation is loading. Please wait.

Nikola Dimitroff Creating Genres creatinggenres.com.

Similar presentations


Presentation on theme: "Nikola Dimitroff Creating Genres creatinggenres.com."— Presentation transcript:

1 Nikola Dimitroff nikola_dimitroff@abv.bg Creating Genres creatinggenres.com

2 1. Multiplayer games structure  Pre-HTML5 limitations 2. Implementing bidirectional connections in the browser without plugins  Ajax  Web services  Comet programming  Web sockets  SignalR

3 3. SignalR in details  The API – Hubs, Persistent Connections  Installing and configuring SignalR  Creating a simple chat app with SignalR

4

5  Generally, multiplayer games implement the client-server model  The server controls the game => can validate user information and prevent hacks  Allows heavy and crucial calculations to be run on the server  Eases performance requirements on the client

6  Generally, multiplayer games implement the client-server model  Most often communication is bidirectional and based on TCP

7  But how do we do bidirectional communication on the web?  Remember: HTTP is stateless  Must find a workaround around the Page-By- Page model

8

9  Basic server polling techniques  Ajax (Asynchronous JavaScript and XML)  Web services  Both allow to send data to and retrieve data from a web server but employ large HTTP (or SOAP) overheads

10  Comet programming  Umbrella term for several techniques that imitate bidirectional communication  Ajax long-polling  Server-sent events  Hidden iframe

11

12  The WebSocket era  Allows full-duplex communication over TCP  Small headers and no overload on messages  Not supported by IE < 10 & most mobile browsers (iOS Safari 6.0+ and Blackberry 10.0+ are exceptions)

13  Introducing SignalRSignalR  Provides an abstraction around the connection between the server and the client  Detects and uses the most appropriate technology/technique based on what the client and the server support  Fallback order:  WebSockets  Server Sent Events, aka EventSource  Forever Frame (for Internet Explorer only)  Ajax long polling

14

15  Installing and configuring SignalR – a How-To  Install SignalR using NuGet (Note: When searching for SignalR in NuGet make sure you tick “Include pre-release”)  Go to Global.asax and register SignalR by adding a call to RouteTabRouteTable.Routes.MapHubs() in the Application_Start method BEFORE anything else (example source code on the next slide)

16  Installing and configuring SignalR – a How-To  And you`re done. In order to use SignalR now, include the following 3 scripts on every page you need: jQuery, jQuery.signalR & the dynamically generated /signalr/hubs <script src=http://code.jquery.com/jquery-1.8.2.min.js type="text/javascript"> <script src="Scripts/jquery.signalR-1.0.0-rc1.min.js" type="text/javascript"> protected void Application_Start() { RouteTable.Routes.MapHubs(); //More code }

17  The API  SignalR provides two main classes for communication – PersistentConnection and Hub  A hub is simply a message dispatcher around a PersistentConnection but it`s quite neat  Every client connected to SignalR will receive an unique Connection Id

18  Setting up hubs  Create a class inheriting from Microsoft.AspNet.Signalr.Hub  Every non-static method that you write will be callable by the client  Sending messages to the client is as easy – use the Clients property of the hub to select the receiver(s) and call the method you want on the client

19  Tricks:  Hooking up for a client side event after the connection has been made has no effect.  If you are using buttons hooked up with signalr, make sure to explicitly set their type to “button”. Otherwise the buttons will act as submits.  Hook up UI events on $.connection.start().done()

20

21


Download ppt "Nikola Dimitroff Creating Genres creatinggenres.com."

Similar presentations


Ads by Google