- From: Dave Raggett <dsr@w3.org>
- Date: Fri, 23 Sep 2011 11:23:33 +0100
- To: Cathy.Chan@nokia.com
- CC: public-device-apis@w3.org
On 22/09/11 23:07, Cathy.Chan@nokia.com wrote: > +1 on avoiding polling. > > Not to mention that using the number of services alone to detect changes in > available services is simply unreliable. What if I started with two rendering > control services, one of them left the network while a brand new one joined > the network during a polling interval? The number of services would be the > same, but the actual services would be different. > > - Cathy. +1 The getNetworkServices call surprised me by only reporting services the browser had already found prior to that call. I had expected the call back to be invoked whenever a matching service appears or disappears. To stop such call backs you would call getNetworkedServices again with NULL for the call back function. The first call back would be quick and would provide the list of matching services that the browser already knows about. I would also like to see a more generalized discovery and messaging mechanism that isn't limited to HTTP. Why can't we allow web applications to discover and use services on devices connected by other interconnect technologies, e.g. USB, Bluetooth, Firewire, NFC and ZigBee? As an example involving NFC, imagine using a web application in your phone to display information about an object with an RFID tag, or to exchange information with someone by touching your phone to theirs, or to sign in to a website or to pay for an online purchase, by touching your phone to your notebook computer. Instead of providing a URL to access the service as with the getNetworkedServices proposal, the service object directly exposes the interface for accessing the service. It is also worth distinguishing discovery and binding, as users may want to view information about services before selecting which one to use. This is a feature of the webinos API where you call the bind method on the discovered service to bind it. Here is a typical scenario: 1. web page call findServices with service type and found, lost and error call backs 2. web page displays list of matching services where the list is dynamically updated via found and lost callbacks. 3. user selects a service 4. web page calls bind method on service passing it a object with handlers for bound notification etc. 5. web page makes use of the bound service via methods and properties exposed by service object The user is asked for permission for the web page (or installed web widget) to: a. access to service descriptions (as passed with found callback) b. bind to a service and make use of it The ability for web page scripts to scan your local environment is a risk to your privacy, and as such this must be subject to user control. Knowing about a service and being able to use it are two different things. This makes in necessary for users to further control which services a web page can bind to. Ensuring usability of such control is a challenge and should be beyond the scope of the discovery specification, although we should certainly be free to discuss what we feel to be good practices. Note that an alternative to the above would be to hand the task of presenting the list of services and binding to a service selected by the user over to the browser. The web page script would in essence be limited to seeding the search parameters and requesting the browser to ask the user to make a choice. 1. web page calls getService with service type and success/failure callbacks 2. getService returns immediately with a handle that can be used to remove the selection UI 3. browser displays the service selection UI with a dynamically updated list of services 4. user clicks on chosen service or on cancel button 5. web page call back invoked with service object with bound interface for that service In this approach the web page doesn't get to scan the local environment which is a plus for privacy, but a negative for some kinds of applications that want to offer functionality based upon a knowledge of what devices/services are available. The selection UI could be enhanced to allow the user to assign and search on tags for each service, in the same way that you can use tags for photo's on flickr. -- Dave Raggett<dsr@w3.org> http://www.w3.org/People/Raggett
Received on Friday, 23 September 2011 10:23:59 UTC