Co-Browsing Dynamic Web Pages
|
|
- Griselda Brooks
- 6 years ago
- Views:
Transcription
1 Co-Browsing Dynamic Web Pages Dietwig Lowet Philips Research Laboratories High Tech Campus 34 Eindhoven, The Netherlands ABSTRACT Collaborative browsing, or co-browsing, is the co-navigation of the web with other people at-a-distance, supported by software that takes care of synchronizing the browsers. Current state-of-the-art solutions are able to do co-browsing of static web pages, and do not support the synchronization of JavaScript interactions. However, currently many web pages use JavaScript and Ajax techniques to create highly dynamic and interactive web applications. In this paper, we describe two approaches for co-browsing that both support the synchronization of the JavaScript and Ajax interactions of dynamic web pages. One approach is based on synchronizing the output of the JavaScript engine by sending over the changes made on the DOM tree. The other approach is based on synchronizing the input of the JavaScript engine by synchronizing UI events and incoming data. Since the latter solution offers a better user experience and is more scalable, it is elaborated in more detail. An important aspect of both approaches is that they operate at the DOM level. Therefore, the client-side can be implemented in JavaScript and no browser extensions are required. To the best of the authors knowledge this is the first DOM-level co-browsing solution that also enables co-browsing of the dynamic interaction parts of web pages. The presented co-browsing solution has been implemented in a research demonstrator which allows users to do co-browsing of web-applications on browser-based networked televisions. Categories and Subject Descriptors H.5.3 [Information interfaces and presentation]: Group and Organization Interfaces Computer supported cooperative work. General Terms Algorithms Keywords Co-browsing, shared browsing, collaborative computing, Web4CE, collaboration 1. INTRODUCTION The browser is turning into a ubiquitous platform for providing users access to data, services and applications. The browser is moving into the direction of a thin client computing platform in the PC domain and also gained importance in the mobile domain and will be present on networked TVs (based e.g. on Web4CE [1]) in the near future. Conjoined with the trend of the increasing amount Copyright is held by the International World Wide Web Conference Committee (IW3C2). Distribution of these papers is limited to classroom use, and personal use by others. WWW 2009, April 20 24, 2009, Madrid, Spain. ACM /09/04.. Daniel Goergen Philips Research Laboratories High Tech Campus 34 Eindhoven, The Netherlands daniel.goergen@philips.com of web-based multimedia services, a browser-based IPTV platform [9] is the logical next step. The solution presented in this paper has been developed for a browser-based TV platform based onweb4ce, but applies equally well for PC and mobile browsers. We see the browser-based TV platform not only as a possibility to bring well-established internet services and new TV related services to the user, but also as an opportunity to enable new types of services and user experiences. One aspect here is to enable the user to share content and experiences with their family and friends at distant locations from the comfort of their couch. Examples of experience sharing are watching pictures together (as depicted in Figure 1), watching online video clips together, doing online shopping together or playing games together. Figure 1 Two couples watching pictures together Bringing synchronous experience sharing to the user can be done in two ways. A first way is to develop new multi-user applications developed with multiple users in mind. But this would only be done for a small amount of web applications and will not include the vast amount of available web applications already out there. A second way is to develop a generic mechanism for synchronizing existing single-user web applications between two or more browsers. There are many single-user web applications for which synchronous sharing is an interesting option. Watching pictures together on Flickr 1, using Google Maps 2 for planning a trip together and choosing a movie together on a movie theatre web site, are some examples. To avoid the adaptation of all these single-user services, a generic co-browsing mechanism for synchronizing single-user web applications between two or more browsers is needed. As indicated in Figure 2, a generic co-browsing mechanism provides a low development cost solution for sharing many interesting applications together
2 Single-user single-user application Generic sharing mechanism + => Multi-user experience multi-user experience s Figure 2 Benefits of a generic co-browsing solution Due to the extensive use of JavaScript and Ajax 3, many web pages are better described as a web application rather than as a web document. Notable examples are online word processors like Google Docs 4, the IM web client Meebo 5, and the Google web client 6. But the use of these technologies also causes state-ofthe-art co-browsing solutions as [4] and [7] to be not suited for such type of web applications, since they have been developed for static web pages. They do not support the synchronization of the dynamic parts and the JavaScript and Ajax interactions of web pages. The main contribution of this work is that is presents two cobrowsing solutions that enable the synchronization of Ajax-based web-applications which make extensive use of JavaScript and XMLHttpRequest interactions. Both solutions are based on synchronizing the browsers at the DOM level. The first solution synchronizes the browsers by directly synchronizing the changes made on the DOM tree (JavaScript engine output synchronization). The second solution synchronizes the browser by synchronizing UI events and incoming data and thus keeping the JavaScript engines synchronized (JavaScript engine input synchronization). Though the latter solution is potentially less robust it offers the better user experience and is more scalable. Both solutions can be implemented in JavaScript and require no extensions to a normal browsers. The presented solution has been developed for a internetconnected, browser-based TV. Such a platform has some limitations compared to the PC domain. One important aspect is that it is not as simple as on a PC to install additional plug-ins in a browser or even install a new browser on a TV. Moreover, the solution should work across browsers from different vendors and CE manufacturers adhering to the same (minimal) standard (e.g. Web4CE [1]). Due to that, we strive for a solution that requires no changes to the browser and can be implemented completely in JavaScript. Thus, the presented DOM level solution is a perfect match. Besides the TV platform, a co-browsing solution is also applicable for other platforms, like PCs and mobile phones, which provide access to web-based application through a browser. As indicated above, a co-browsing solution can be applied for experience sharing applications in the consumer domain, but can also be used for collaboration frameworks in the professional domain. Here, next to frameworks that require a browser plug-in, like e.g. WebEx, a number of collaborative frameworks are currently emerging which use only the native browser at the client side, such as [11]. Sharing single-user web pages is clearly a valuable addition to any collaboration platform. This paper is structured as follows. The next section gives an overview of the conceptual model of a browser. This model is used in Section 3 to provide an overview of JavaScript engine input and output synchronization as two methods for co-browsing dynamic (JavaScripted) web pages. This section also gives an overview of 3 Asynchronous JavaScript and XML different deployment options and compares the two basic methods. In Section 4, the method based on JavaScript engine input synchronization is described and discussed in more detail. Section 5 gives a short description of our proof-of-concept demonstrator, based on Firefox, which makes use of the presented co-browsing solution in an experience sharing framework for browser-based networked TVs. An overview on related work is given in Section 6 and the paper concludes with Section BROWSER MODEL In this section, we will give a conceptual model of an HTML browser for the purpose of explaining different possible co-browsing solutions. This gives an insight into how two or more browsers can be synchronized for co-browsing. The information provided here is based mostly on documentation of the Firefox browser 7 and in some details it may not be completely accurate for other browsers. 2.1 Rendering a web page What happens when the browser is directed to a new URL? Figure 3 gives an overview of the following description. First, the browser starts fetching the data from the network, using the networking library. As the data for the page streams in, it is transferred to the layout engine, which typically runs in a separate thread, the UI thread. The incoming HTML is parsed and a DOM tree representation is constructed. In addition to building up a DOM tree, modern CSS2 8 -compliant browsers also build up separate rendering trees. Based on these two trees, the frame tree is built. Once the frame tree is built, the reflow process determines where the frames have to be displayed on the screen. In a last step, the screen is painted, which is typically performed by making use of the local platform graphics primitives and widgets. Network library OS networking library Execute(script) getcontent(url) Javascript engine HTML layout engine Render() UI events OS graphical primitives BOM API Figure 3 Conceptual overview of a Mozilla-based browser After the page is loaded and rendered, the user can start interacting with the page. Actions like moving the mouse, scrolling a frame, filling-in a form or clicking on a link will generate UI events. The native OS windowing system will forward these events via the widget library to the layout engine. The layout engine will update the browser screen area accordingly and if necessary dispatch JavaScript UI events to registered event handlers. The term JavaScript UI event is used for the events a browser generates and sends to the JavaScript engine
3 2.2 Interaction between the layout engine and the JavaScript engine As shown in Figure 3, the HTML layout engine of a browser also takes care that the JavaScript included in the web page is executed by invoking the JavaScript engine. Execution of JavaScript code starts when the page is loaded 9. The layout engine initiates the execution of all initial JavaScript code contained in a page. After this initial JavaScript is executed, the remaining JavaScript, i.e. the event handlers or the functions that have been scheduled by a timer, will be invoked by the layout engine when the corresponding event occurs or the corresponding timer expires. The JavaScript code embedded in a web page can influence the layout engine or even the browser in general by means of the following standardized objects, which are collectively known as the Browser Object Model (BOM). The main examples are: 3. CO-BROWSING SOLUTIONS As described before, the co-browsing solution should support the synchronization of the JavaScript and XMLHttpRequest interactions of dynamic web pages. Based on the discussion in the previous section, this leads to two main methods for synchronizing scripted web pages: (1) Synchronization of the JavaScript engine input, i.e. UI event and HTML/ XMLHttpRequest synchronization, and (2) Synchronizing the JavaScript engine output, i.e. DOM tree synchronization 11. As depicted Figure 5, the different methods reside on different levels. HTML / Ajax UI Events HTML / XHR synchronization UI event synchronization HTML / XHR UI Events Window object: Interactions with the browser window can be done via the window 10 object. Examples are window.location, to redirect the browser to another URL, window.scroll(), to scroll the window, and window.settimeout() - to tell the JavaScript engine to evaluate an expression after a specified amount of time. Document object (DOM): Web application (JavaScript engine) DOM tree changes HTML rendering engine DOM tree synchronization Framebuffer synchronisation Web application (JavaScript engine) DOM tree changes HTML rendering engine The document object represents the entire HTML document and can be used to access and change all elements in a web page. Examples are adding nodes, changing style attributes, adding event listeners etc. For a complete description of the document object, see [12]. XMLHttpRequest object: This object allows JavaScript code to send and receive data to/from an HTTP server by creating an XMLHttpRequest object and calling its open() and send() functions. HTML / Ajax Web application (JavaScript engine) UI Events DOM changes HTML rendering engine Figure 4 Browser model from the JavaScript engine perspective Framebuffer Screen However, from the perspective of the JavaScript engine a simpler browser model can be used as depicted in Figure 4. The JavaScript engine conceptually has two types of input: incoming data from the HTML service via the HTTP protocol and via the DOM and UI input from the user via the native graphical primitives and the DOM. The browser can be considered to consist of two parts: (1) a JavaScript engine which executes the application logic and produces HTML that is rendered by (2) the HTML rendering engine to the screen. Screen Screen capture synchronisation Screen Figure 5 Overview of basic co-browsing options. (XHR stands for XMLHttpRequest) 1. JavaScript engine input synchronization: This method relies on keeping the JavaScript engines in all involved browsers synchronized, and thus indirectly also the DOM tree. To do this, both the data that the browsers receive from the web server and the JavaScript UI events happening at all browsers must be synchronized. UI event synchronization means that all user events injected by the layout engine into the JavaScript engine of one browser must also be injected into the JavaScript engine of the other browsers in the same order. Consequently, the JavaScript engine of every browser is running and only JavaScript UI events need to be sent over. If the co-browsed web service adheres to the web model in which each URL points to a unique piece of information the HTML/XMLHttpRequest data synchronization is automatically cared for. However, for HTML services that sometimes return different data for the same URL, or keep complicated state information (e.g. a transaction in an online shopping site), a co-browse proxy is needed. The co-browse proxy ensures that all the co-browsers receive the same data 12 and that, for the co-browsed HTML service, the cobrowsers look like one single browser. 9 JavaScript code can already be executed before the complete page has been loaded, similar to the way an initial part of the page can already be rendered before the complete page is loaded. It is completely up to the browser to decide when to start displaying content and executing JavaScript Capturing the screen using e.g. an additional camera and doing framebuffer-level synchronization are non co-browsing solutions and will not be discussed further. 12 There are timing issues which needs additional synchronization. This will be discussed in detail in section
4 2. JavaScript engine output synchronization: In this method, the co-browsing code listens for DOM tree changes in one browser, the reference browser. If the JavaScript engine of the reference browser updates the DOM tree, this DOM tree update is sent to the other browsers, the client browsers. The co-browsing code in the client browsers receives incoming DOM tree updates and uses the DOM interface to adapt the DOM tree of the web application. In this solution, only one browser communicates with the web server. This also means that transferring control to another browser is not trivial, because it would involve sending over the state of the JavaScript engine from the reference browser to one of the client browsers. If all ends are allowed to interact with the webapplication 13, all UI events have to be sent to the reference browser. As opposed to method 1, the events are only executed in the reference browser. Only the reference browser is visible to the co-browsed HTML service, so that also in thus variant only one request to the service is generated for all co-browsers. Therefore, also HTML services that return different data for the same URL or HTML services that keep complicated state information are by default handled correctly in this method. 3.1 Different deployment options The two fundamental co-browsing methods explained in the previous sections can be deployed in multiple ways. We list here the most realistic ones. Note that for Figure 6 to Figure 9, a circular arrow in a browser indicates that in this browser the JavaScript code of the co-browsed web application is executed, otherwise it is not. In the following figures, the HTML service denotes the backend components which are serving the web-application which is cobrowsed. Browser 1 and Browser 2 denotes the clients doing cobrowsing including all necessary co-browsing functionality and deployment specific functionality which is described in the following. All other components are deployment specific and are described for each option in detail. 1. JavaScript engine input synchronization: All locally generated UI events are intercepted by the cobrowsing code and the default actions and associated event handlers are not executed. Instead, they are sent over to a UI event ordering service. This service does global ordering of the events so that all events are received at all ends in exactly the same order (so-called globally ordered multicast). Without a UI event ordering service only a master-slave co-browsing solution would be possible. All end points receive the ordered events and inject them into the event queue of the JavaScript engine executing the web-application. Without a UI event ordering service only a master-slave co-browsing solution would be possible. A co-browse proxy is needed to synchronize the content coming from the HTML service. For the co-browse proxy functionality, two deployment options can be distinguished: a. Using a backend co-browse proxy server: A backend co-browse proxy acts on behalf of the clients and requests all data (including XMLHttpRequests) from the web service. It caches the data and ensures all browsers receive the same data. This solution is shown in Figure 6. HTML service Co-browse proxy UI event ordering service (1) UI events (2) ordered UI events Browser 1 Browser 2 Figure 6 UI event synchronization combined with a backend proxy b. Using a client-side co-browse proxy: The co-browse proxy functionality is implemented on one of the co-browsers. Every time a new web page is loaded, the proxy code will send the HTML of this new page to the other co-browsers, using an HTTP forwarding service. Within the other co-browsers, the co-browsing code will receive this HTML and use it to overwrite the document of the co-browsed frame. Also all data received via an XMLHttpRequest object must be synchronized (see Section 4). Note that with this method it is not possible to proxy binary data like pictures and movies. Figure 7 gives an overview of this solution. HTML service (1) XML HTTP forward service (4) Ordered UI events (2) XML UI event ordering service Browser 1 Browser 2 (3) UI events Figure 7 UI event synchronization combined with a client-side proxy 2. JavaScript engine output synchronization: All locally generated UI events are intercepted by the cobrowsing code and the associated event handlers and default actions are not executed. Instead, they are sent to a reference browser, which injects the events into the event queue of the JavaScript engine executing the web-application. Only the reference browser runs the JavaScript code causing changes in the DOM tree. A description of these DOM tree changes are forwarded to all other co-browsers which apply them to their local DOM tree. 13 It is also possible that only the user using the reference browser has control. Such a situation is called Master-Slave. 944
5 For the reference browser, two deployment options can be distinguished: a. Backend reference browser: The backend reference browser does not have any local user interaction. Instead, the user interaction of every cobrowsing user is sent to the reference browser in form of UI event descriptions. These events are injected into the JavaScript engine executing the JavaScript of the web application. If the JavaScript causes changes to the application s DOM tree, updates of these changes are sent to the client browsers and applied to their DOM tree. The client browsers do not execute the web-application s JavaScript code. It is only executed on the back-end. See Figure 8 for an overview. HTML service Reference browser (1) UI events (2) DOM tree update Browser 1 Browser 2 Figure 8 A backend reference browser b. Client-side reference browser: In the solution depicted in Figure 9, one of the cobrowsers plays the role of the reference browser. All other co-browsers send the UI events to this reference browser using an event forwarding service. As opposed to the UI event synchronization, this service only enables peer-topeer communication between the browsers and does not need to do any event ordering. The received UI events are injected into the reference browser, and all DOM tree updates caused by local and remote UI events are forwarded to the client browsers using a DOM forward service. Note that only the reference browser executes the web-application s JavaScript code. Compared to the backend reference browser, this solution is far more scalable. HTML service (3) DOM tree update Browser 1 (reference) (2) UI events DOM forward service Event forward service (1) UI events (4) DOM tree update Browser 2 Figure 9 A reference browser on one of the client devices 3.2 Comparison From the above description of the two methods for co-browsing, the following advantages and disadvantages of the methods can be deducted. 1. Robustness: JavaScript engine output synchronization is robust because resynchronization is easy to implement by just sending over the complete DOM tree. JavaScript engine input synchronization is less robust, because it may be difficult to keep the JavaScript engines in sync. Resynchronization is difficult to implement, because this would mean sending over the DOM tree and the state of the JavaScript engine. 2. User experience: JavaScript engine input synchronization has a better UI experience, especially for web page containing animations and video content. JavaScript engine input synchronization allows the users to quit a co-browse session at any point in time and continue browsing from the exact place they stopped the cobrowsing session (thus a seamless break-out of the user is possible) 14. The output synchronization cannot support that easily; the state of the JavaScript engine has to be transferred to all client browsers. 3. Scalability: JavaScript engine output synchronization generates more network traffic than input synchronization, since the cobrowsers have to send both DOM tree updates and UI events to the reference browser. In case of input synchronization, only the UI events have to be sent. The actual amount of traffic depends on the deployment variants. From the perspective of multiple independent co-browsing sessions, the major disadvantage in both cases with infrastructure support is that a centralized solution is less scalable than the client site implementation. From the perspective of one co-browsing session, the local co-browse proxy limits the amount of users drastically, because the upload bandwidth needed for data forwarding is limited. 4. Implementation effort: DOM tree synchronization is a much simpler and robust approach and thus the implementation effort is lower than in the UI event synchronization. For all variants, it holds that the concurrent interaction of multiple users with a web-application can cause interpretation problems of the user interaction. In case of JavaScript engine input synchronization, the co-browse functionality only ensures that the UI events are executed in exactly the same order on all ends. But this problem is not specific for co-browsing. Also multi-user interaction on the same device can cause problems. The only generic solution is to disallow concurrent interaction and use master-slave kind of co-browsing. 4. JAVASCRIPT ENGINE INPUT SYNCHRONIZATION We consider the co-browsing based JavaScript engine input synchronization the most interesting because it offers the best user experience and the best scalability. In this section, we will describe this method (1.a in the previous section) in more detail and we will describe how this method can be implemented in JavaScript. We make use of the fact that JavaScript is an event-based language and is single-threaded. The co-browsing solution consists of three parts: 14 Starting of co-browsing at any point in time is not supported by the proposed system. This is an aspect of future work. 945
6 the co-browsing code on the client side, the co-browse proxy and the UI event ordering service. The UI event ordering service ensures that the events sent by the co-browsing code of all browsers are received in exactly the same order at all ends (globally ordered multicast). This is achieved by merely following a first-in-first-out policy. Moreover, it also provides a communication channel for the case that peer-to-peer connections between the browsers are not possible due to firewalls or Network Address Translation (NAT).We assume that there is a proxy server that takes care that the two cobrowsers receive the same HTTP packets. In this variant, receiving different data for the same URL from a server or a server that keeps state information is not an issue. First, we describe the synchronization of UI events. Then we describe the synchronization of other JavaScript engine inputs. Finally we describe how the client side JavaScript code can be deployed on the browsers. 4.1 UI event synchronization The basic challenge is to keep the JavaScript engines in all browsers synchronized by triggering at both sides the same UI events in the exact same order. In all browsers, the co-browsing code should perform the following basic steps when a new web page is cobrowsed: 1. After a new page has been loaded, take care that every HTML element has a unique identifier. 2. Intercept all locally generated UI events, disable them and send a description of them to the UI event ordering service. 3. Start listening to event descriptions coming from the event ordering service. 4. For every event description received from the event ordering service perform the necessary actions. We will now describe these steps in more detail. For all cobrowsers, the first step is to make sure that every HTML node in the HTML document has a unique ID. Therefore, a script is used that assigns an identifier to every node without an identifier. It is executed after the new page has been loaded which is triggered by the load event. All default user actions are blocked until the load event had occurred since user interactions that take place before this event cannot (always) be transmitted. All locally generated UI events must be intercepted, captured and sent to the event ordering service. These are the DOM level 2 core events [11] (DOMFocusIn, DOMFocusOut, DOMActivate, mousedown, mouseup, click, mouseover, mousemove, and mouseout), the key events (keydown, keyup, and keypress) and the HTML events (submit, focus, blur, resize, and scroll). Capturing the UI events can be done by registering event handlers by means of the addeventlistener() method provided by the DOM interface. Since the UI events must first be intercepted and sent to the UI event ordering service, the local handling of the user input must be disabled. This means that the default action of the browser should be blocked (e.g. loading of a new page when an anchor has been clicked) and that no JavaScript event handlers of the original web pages may be called. The former can be achieved by the use of the DOM function preventdefault(). To prevent JavaScript event handlers from processing an event, it is possible to use the stoppropagation() function. The code snippet in Figure 10 shows how all local event handling can be disabled for the click event. document.addeventlistener( 'click', function(event){ event.stoppropagation(); event.preventdefault(); }, true ); Figure 10 Pseudo-code for intercepting and blocking of local mouse click events Sending over an event description to the UI event ordering service can be done by first serializing the event into an XML string and then sending it using the XMLHttpRequest object. <event> <type>mouseover</type> <url> <target>cssf_351</target> <bubbles>true</bubbles> <cancelable>true</cancelable> <timestamp>0</timestamp> <screenx>854</screenx> <screeny>494</screeny> <clientx>636</clientx> <clienty>354</clienty> <pagex>636</pagex> <pagey>2695</pagey> <ctrlkey>false</ctrlkey> <shiftkey>false</shiftkey> <altkey>false</altkey> <metakey>false</metakey> <button>0</button> <relatedtarget>null</relatedtarget> </event> Figure 11 UI event description in XML Figure 11 gives an example of the syntax of an event description that is sent over the event ordering service. All clients receive an ordered stream of event descriptions from the UI event ordering service. Receiving these events can again be done through the use of the XMLHttpRequest object as described e.g. in [10], or in case of Web4CE or Firefox by using a TCP connection. For every event description received, the corresponding event can be recreated and dispatched by using the functions document.createevent(), document.initevent() and document.dispatchevent(), as exemplified by the following pseudo code. document.createevent(eventtype); document.initevent(event); target.dispatchevent(event); Figure 12 Pseudo-code for generating JavaScript UI events These functions cause the associated JavaScript event handlers to be called. This keeps the user input for the JavaScript engines synchronized. However, recreating and dispatching an artificial DOM UI event does not always cause the associated default action to be executed. For example, manually firing a focus event on a document element does not cause the element to receive focus. The focus() method must be used for that. Likewise, manually firing a submit event does not submit a form. The submit() method must be used for that. This is important for security reasons, as it prevents scripts from simulating user actions that interact with the browser itself. The only actions that happen after calling target.dispatchevent() for a specific event is that the associated JavaScript event handlers are executed. 4.2 Synchronizing other JavaScript engine interactions In the previous section, we have described the solution for cobrowsing based on UI event synchronization and how the user input 946
7 for the JavaScript engines can be kept synchronized even though different UI events are generated at both sides simultaneously. However, to keep the JavaScript engines synchronized not only the external UI events have to be synchronized, but also every interaction of the JavaScript code from the co-browsed web page with the outside has to be synchronized. The JavaScript engine runs in a sandbox and can only interact with elements outside the sandbox through the BOM functions and the BOM properties provided by the browser. Some of these BOM functions and properties can cause loss of synchronization, for example: window.random(), window.settimeout() and window.settimeinterval(), window.alert(), window.confirm(), window.show(), window.open() etc. Also requests via the XMLHttpRequest object must be synchronized. An overview is given in the following Figure 13. window.settimeout() window.cleartimeinterval() date.gettime() window.random() XMLHttpRequest.open() XMLHttpRequest.send() UI events HTML JavaScript Engine Figure 13 Interactions of the JavaScript engine via the BOM The actions and return values of these functions need to be synchronized. This can be done by redefining these functions, before they are called. We will show how this can be done by taking the window.settimeout() function as an example. The effects of the other functions can be synchronized in a similar way. The window.settimeout() function will register a callback function that will be called by the JavaScript engine after the specified amount of time. If this callback function is not called between exactly the same event handlers on the different co-browsers, the synchronization can be broken. The exact timing of the callback execution is not the issue. It is important that within all browsers the timeout callbacks are inserted at the same place in the event queue. The basic idea of the solution is to redefine the window.settimeout() function. If the redefined window.settimeout() is called, the callback function is stored and a sequence number is assigned. Only on one browser (the master) a timeout is registered, which sends a notification with the sequence number to the co-browsers using the UI event ordering service when executed. All co-browsers execute the timeout s callback when receiving this event. The pseudo-code in Figure 14 shows how the settimeout() function of the master browser can be redefined. old_settimeout = window.settimeout; new_settimeout = function(callback,time){ new_callback = new function(){ send_to_ui_event_ordering_service (callback); } old_settimeout(new_callback, time); } window.settimeout = new_settimeout; Figure 14 Pseude-code for synchronising the window.settimeout() function Other issues can be solved as follows: File upload: File upload cannot be handled by JavaScript code on the client side alone. There are two options. Either file upload is disabled on both sides or file upload is only enabled on one client and the co-browse proxy is needed to make sure both clients receive the same response from the server after the file is uploaded. Cookies: Web pages have the possibility to save state at the client side by means of cookies. The co-browse proxy has to decide of which client the cookies are used. Another approach is that JavaScript code is used to synchronize the cookies at both sides. Mouse pointer: Another issue is how to deal with the mouse pointer during a co-browsing session. There are basically two options: only one pointer is used, which is shared by all clients, or every client has his or her own visible pointer, such that multiple pointers are visible on the screen. Both options are equally valid and depend on the user preferences. In our implementation we have opted for the second option. 4.3 Co-browsing client code deployment As can be seen from the previous section, the code needed for keeping the JavaScript engine synchronized can be implemented in JavaScript 15. We describe now how this co-browsing JavaScript code can be added to the browser: 1. Insertion by co-browse proxy: The co-browse proxy needed in the UI event synchronization is able to add additional code into the downloaded web-pages. In this case, the web-applications will get build-in support for co-browsing. Since the proxy is not always necessary the cobrowsing solution gets less scalable because the browser always has to download at least the initial page through the cobrowse proxy. 2. JavaScript browser add-on: Many browsers support the development of browser add-ons developed in JavaScript. A variant of this is that the cobrowsing JavaScript code can be in the form of a user script such as Greasemonkey 16 for Firefox or Greasekit 17 for Safari. 3. Co-browsing JavaScript code in a (hidden) iframe: In this option, the user has to load a portal site first. The user than can use this portal site to browse to single-user web applications and start a co-browsing session with others. Here, the code for co-browsing (and also for session set-up) resides in a (hidden) frame. This frame must be permanently available during the co-browsing session. The JavaScript in this frame should also have special privileges (cross-domain scripting) to be able to listen to events happening in the co-browsed frames and to makes changes in these frames. This option is depicted in Figure 15. The top frame of the browser consists of two subframes. One frame is the community frame which serves for communication purposes (buddy list, IM, video chat) and it can be hidden when not needed. The other frame is the application frame, which is shared, and where the web service being co- 15 Plug-ins or native implementations in the browser are of course always possible if needed to improve performance on embedded devices
8 browsed is shown. The community frame also contains the necessary JavaScript code for co-browsing. Community frame Application frame Co-browsed web application (client side) Figure 15 A possible UI layout for a co-browsing application. 5. IMPLEMENTATION We have implemented the co-browsing method as described in the previous section in a proof-of-concept demonstrator. The client side of the demonstrator is based on the Firefox browser. Figure 17 Bob and Alice looking a nice restaurant together with their (remote) friends. To communicate with the XMPP server, we use the TCP socket mechanism provided by the Firefox browser available for trusted or signed JavaScript code. However, there also exist XMLHttpRequest-based implementations in JavaScript for XMPP [10]. For CE devices, the Web4CE standard supports outgoing TCP connections via the Web4CE specific Notifsocket mechanism. Figure 18 gives an overview of the high-level architecture of the demonstrator. HTML service HTML XMPP server (incl. chat room) Co-browse proxy Flash Media Server } Support services Presence, IM, UI events HTML Video chat Figure 16 Two people remotely watching vacation pictures together on Google Maps. In a first step, we had implemented the co-browsing as a Greasemonkey script. Though this worked well, we wanted to extend this co-browsing application with presence, instant messaging and video chat functionality. To this end, we moved the co-browsing JavaScript code into a separate iframe, which we refer to as the community frame as explained in the previous sections. We also implemented an XMPP client in JavaScript and added this to the community frame. The XMPP client provides presence, instant messaging and session initialization for video chat or co-browsing. We added video chat functionality by means of the Adobe Flash Player 18 and the Adobe Flash Media Server Figure 16 shows a screen shot from this first prototype version where the community frame is still clearly visible on the left. In later versions of the demonstrator (Figure 17), the community frame is hidden, but it overlays its content transparently over the application frame when needed, for example to show the buddy list, show the video chat and to show incoming invitations. Moving the JavaScript code for co-browsing to the community frame means that it needs extra security privileges (cross-domain scripting) to be able to listen to events happening in the co-browsed application frame and to make changes to it. For the event ordering service, we use the XMPP chat room mechanism which already provides the necessary ordering functionality. The co-browse proxy is implemented as a backend service in Java Browser 1 Browser 2 Browser N } In home Figure 18 Overview of the demonstrator architecture. The Firefox browser is used without making any changes, except for configuring it to allow trusted or signed JavaScript to receive crossdomain scripting permissions and to make use of the Firefox socket mechanism. We also configured the Firefox browser to not allow window pop-ups or open new windows which would break the cobrowsing synchronization. Though the co-browsing solution was not developed with SVG in mind, first tests with SVG documents are promising and indicate that also SVG documents can be co-browsed with the current solution Our current demonstrator shows that it is possible to do co-browsing of highly scripted web pages like e.g. Google Maps 20, Flickr 21, BrowseGoods 22 without loss of synchronization. However, for many pages the co-browsing solution can still loose synchronization. This is due to a number of issues with real-life web pages:
9 - Flash is used a lot, but it is not possible to synchronize flash on the DOM level of the browser. In the demonstrator, a Flash object is simply removed from the page. - CSS style rules are not triggered by JavaScript generated UI events. Style rules do not have lasting effect and most often don t cause loss of synchronization. A synchronization loss can happen when the application of a style rule changes the size of an HTML element and hence causes a change in the layout of the web page. A possible solution is to listen with DOM Mutation event listeners to changes in the size of HTML elements. Many other issues can be solved by implementing customized solutions in the co-browsing methods for common web page errors and browsers peculiarities. This is the approach we have taken in our demonstrator. However, web pages that want to support co-browsing can adhere to a few simple guidelines that make the co-browsing solution significantly simpler to implement and more robust. Examples are to use always a unique URL for a unique piece of data, to only start executing JavaScript code after the onload event and to use SVG instead of Flash. There are also a number of browser features already supported by some browsers, which can make the co-browsing solution simpler and/or more robust. Here are a few important examples: - Support for the beforeexternalscript event: This event is currently supported only by the Opera browser and is raised before any JavaScript code of a newly loaded web page is executed. It provides a convenient entry point to make the necessary redefinitions of various JavaScript methods. - Support for getelementfrompoint(): This function is currently only supported by Firefox and Internet Explorer and returns the HTML element located at the specified client screen coordinates. This removes the need to assign an identifier for every HTML element - Support for SVG: SVG can then be an alternative for Flash. - Triggering of CSS rules by events: CSS rules should also be triggered by an event which is generated through JavaScript by the event.dispatch() function. The demonstrator implementation introduced in this section is under ongoing development and is extended continuously. Currently we are working on video object synchronization. This will provide synchronized play-out of video objects like Flash video or HTML 5 video. This enables the users to co-watch web-based video on demand. Another ongoing work is the extension of our sharing framework to support more than two users in a co-browsing session. We are also working on an API that allows third party developers to use the communication and synchronization platform to develop multi-user web applications. 6. RELATED WORK There exist already a number of solutions that provide DOM-level synchronization. All solutions provide the basic web co-navigation functionality that ensures that all the browsers of a session display the same URL. Each co-browsing solution enhances this basic functionality in one or more ways: synchronous scrolling, a shared pointer, chat functionality, co-annotating web pages in real-time, etc. However, current solutions only provide mechanisms for synchronizing the static part of web pages and in some cases support for additional features such as synchronizing forms or synchronized scrolling. None of these co-browsing solutions provide support to synchronize the JavaScript interactions of the web pages. A second difference is that the client side of existing co-browsing solutions is often implemented as Java applets whereas in our solution, the client side can be implemented in JavaScript. This is for example the case in [5], [6] and [7]. The GroupWeb [6] co-browsing solution supports synchronous scrolling, telepointers for enacting gestures, and group annotations that can be attached to pages. GroupWeb is based on a backend proxy server and client-side Java-applet technology. In [3] a co-browsing solution is described in which each user's computer has two instances of the web browser running. One instance contains the target web page that is being collaboratively viewed. The other window contains a control panel and a monitor routine. The monitor routine periodically analyzes the browser instance containing the target web page, to see if any changes have occurred. If a change is detected, such as if the user has scrolled a scrollbar, then that change is transmitted to the other browser. This solution synchronizes attributes such as the browser window size, window and frame web page sources, and scroll bar positions. It also synchronizes form element content (e.g. text fields, checkboxes, select lists). The co-browsing solution presented in [5] is based on a backend cobrowse proxy server and Java applet technology at the client side. This work focuses on symmetric co-browsing where each participating user can take the lead and guide others while browsing web pages. This work proposes the use of a token to determine which browser is the master browser at any moment in time; only the user actions of the browser that has the token have effect. In our solution, all users are at any moment in control. The UI event ordering service ensures that all browsers process incoming UI events and data in exactly the same order. In this way, we keep the browsers always synchronized. Colab [7] is a co-browsing solution that is also based on a backend co-browse proxy server and requires support for Java applets by the browser. The main focus of this work is on easily creating and releasing synchronization relations among users. Screen sharing solutions, which are based on synchronizing the frame buffer, are also used for co-browsing. A screen sharing solution has the main advantage that it is conceptually very simple and the risk of loss of synchronization is very low. However, screen sharing solutions require a lot of bandwidth when there are frequent changes on the screen through animations, slide shows or movie clips for example. Due to the asymmetrical nature of most internet connections currently available, the upstream bandwidth is the limiting factor in shared applications systems. A simple calculation 23 shows that for the JavaScript Engine input synchronization method and implementation presented in this paper the upload bandwidth is realistically at most 120 Kbit/s. Initial measurements on our demonstrator confirm this estimation. Peaks in bandwidth happen when many UI events occur. This occurs, for example, when the 23 One UI event description as described in Section 4 can easily be reduced to a maximum of 150 bytes. During browsing, a maximum of 100 UI events per second are realistically possible. This leads to a maximum upstream bandwidth of 15 Kbyte/s or 120 Kbit/s at one client. 949
10 mouse is moved (generating a lot of mousemove events), when a key is pressed continuously or during scrolling. To compare this with screen sharing solutions, we have tested two screen-sharing products: Microsoft NetMeeting 24 and Citrix GoToMeeting 25 on a 100 Mbit LAN. Given enough bandwidth and for static web pages, both NetMeeting and GoToMeeting performed relatively well. However, when web pages contain frequent screen updates, both systems needed high bandwidth and still had a low frame rate. GoToMeeting used a maximum of around 4 Mbit/s in case of frequent changes on the screen and Microsoft NetMeeting around 20Mbit/s. Even when using this high bandwidth, NetMeeting achieved a very low frame rate (at most 1 frame per second). 7. CONCLUSIONS This paper introduces a co-browsing solution that allows the cobrowsing of dynamic, JavaScripted web pages. The solution works at the DOM level, can be implemented in JavaScript and requires no extensions to the browser. Compared with screen sharing solutions, the needed bandwidth for synchronization is relatively low and it offers a better user experience. While the presented solution is aimed at Web4CE, it is also applicable to dynamic (X)HTML web pages on PCs and mobile devices. Also for professional collaboration in the PC world, where there is currently a trend to also provide collaborative applications via a native browser, we believe that our co-browsing solution can play a valuable role. The co-browsing solution that we propose is generic in that it does not pose requirements to web pages. However, if web developers adhere to a few basic guidelines to support co-browsing, the solution can be made much simpler and also a co-browsing proxy can be left out. Similarly, the support of a few features by the browser can simplify the implementation and can make it more robust against synchronization losses. Moreover, the solution could also be directly integrated into standard browsers which also would improve the performance on embedded platforms (e.g. mobiles and TVs). The presented co-browsing solution enables users to start a cobrowsing session from a given URL. This does not allow a user to start a co-browsing session at any point in time, since the JavaScript application may have changed state after loading the URL e.g. due to user interaction. We refer to this type of immediate sharing as catch-up co-browsing and we are currently investigating possible mechanisms to provide such functionality. Other aspects of further work include the co-watching of web-based multimedia content and an extended session management which includes session with multiple users, content items and services. With our proof-of-concept demonstrator we ve shown the technical feasibility of our solution. The demonstrator provides an Experience sharing framework which combines the co-browsing of arbitrary (multimedia) web application with communication (audio and video chat) and targets the usage on a TV from the comfort of the living room. 8. REFERENCES [1] Consumer Electronics Association (CEA), CEA-2014 Webbased Protocol and Framework for Remote User Interfaces on UPnP Networks and the Internet (Web4CE), June 2006, umber=cea-2014 [2] Dees, W., Shrubsole, P.; Web4CE: Accessing web-based applications on consumer devices; 2007; [3] Esenther, A.; Instant Co-Browsing: Lightweight Real-Time Collaborative Web Browsing; In Proc. of the 11th Int. WWW Conference; [4] Farnham, S., Zaner, M., Cheng, L.,; Supporting Sociability in a Shared Browser; Virtual Worlds Group, Microsoft Research; [5] Gerosa, L., Giordani, A., Ronchetti.; Symmetric Synchronous Collaborative Navigation; Proceedings of the 2004 IADIS International WWW/Internet Conference, Madrid, Spain; [6] Greenberg, S., Roseman, M.; GroupWeb: a www browser as real-time groupware; ACM; [7] Hoyos-Rivera, G., Lima-Gomes, R., Courtiat, J.; CoLab: A Flexible Collaborative Web Browsing Tool; Proceedings of the 19th International Conference on Advanced Information Networking and Applications; [8] Lowet D., Shrubsole P.; Content sharing and experience sharing with Web4CE; TICSP Adjunct Proceedings of EuroITV [9] OpenIPTV forum; Functional Architecture V 1.1,; 2008; Functional_Architecture-V1_ _APPROVED.pdf [10] Paterson, I., Smith, D., Saint-Andre, P.; XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH); Version 1.7; 2008; [11] Pixley, T.; Document Object Model (DOM) Level 2 Events specification; Version 1.0; 2000; [12] Stenback, J., Le Hegaret, P., Le Hors, A.; Document Object Model (DOM) Level 2 HTML Specification; W3C Recommendation; [13] Wang, F., Rabsch, C., Liu, P.. Native Web Browser Enabled SVG-based Collaborative Multimedia Annotation for Medical Image. ICDE 2008: [14] Waterson, C.. Gecko overview; June 2002;
Web Architecture Review Sheet
Erik Wilde (School of Information, UC Berkeley) INFO 190-02 (CCN 42509) Spring 2009 May 11, 2009 Available at http://dret.net/lectures/web-spring09/ Contents 1 Introduction 2 1.1 Setup.................................................
More informationPart of this connection identifies how the response can / should be provided to the client code via the use of a callback routine.
What is AJAX? In one sense, AJAX is simply an acronym for Asynchronous JavaScript And XML In another, it is a protocol for sending requests from a client (web page) to a server, and how the information
More informationJavaScript Specialist v2.0 Exam 1D0-735
JavaScript Specialist v2.0 Exam 1D0-735 Domain 1: Essential JavaScript Principles and Practices 1.1: Identify characteristics of JavaScript and common programming practices. 1.1.1: List key JavaScript
More informationCOMET, HTML5 WEBSOCKETS OVERVIEW OF WEB BASED SERVER PUSH TECHNOLOGIES. Comet HTML5 WebSockets. Peter R. Egli INDIGOO.COM. indigoo.com. 1/18 Rev. 2.
COMET, HTML5 WEBSOCKETS OVERVIEW OF WEB BASED SERVER PUSH TECHNOLOGIES Peter R. Egli INDIGOO.COM 1/18 Contents 1. Server push technologies 2. HTML5 server events 3. WebSockets 4. Reverse HTTP 5. HTML5
More informationRKN 2015 Application Layer Short Summary
RKN 2015 Application Layer Short Summary HTTP standard version now: 1.1 (former 1.0 HTTP /2.0 in draft form, already used HTTP Requests Headers and body counterpart: answer Safe methods (requests): GET,
More informationAJAX Programming Overview. Introduction. Overview
AJAX Programming Overview Introduction Overview In the world of Web programming, AJAX stands for Asynchronous JavaScript and XML, which is a technique for developing more efficient interactive Web applications.
More informationLesson 5: Multimedia on the Web
Lesson 5: Multimedia on the Web Learning Targets I can: Define objects and their relationships to multimedia Explain the fundamentals of C, C++, Java, JavaScript, JScript, C#, ActiveX and VBScript Discuss
More informationComputer Networks. Wenzhong Li. Nanjing University
Computer Networks Wenzhong Li Nanjing University 1 Chapter 8. Internet Applications Internet Applications Overview Domain Name Service (DNS) Electronic Mail File Transfer Protocol (FTP) WWW and HTTP Content
More information20480C: Programming in HTML5 with JavaScript and CSS3. Course Code: 20480C; Duration: 5 days; Instructor-led. JavaScript code.
20480C: Programming in HTML5 with JavaScript and CSS3 Course Code: 20480C; Duration: 5 days; Instructor-led WHAT YOU WILL LEARN This course provides an introduction to HTML5, CSS3, and JavaScript. This
More informationDecision on opposition
Decision on opposition Opposition No. 2017-700545 Tokyo, Japan Patent Holder Saitama, Japan Patent Attorney Kanagawa, Japan Opponent MEDIALINK.CO., LTD. EMURA, Yoshihiko TAKAHASHI, Yoko The case of opposition
More informationPROVIDING COMMUNITY AND COLLABORATION SERVICES TO MMOG PLAYERS *
PROVIDING COMMUNITY AND COLLABORATION SERVICES TO MMOG PLAYERS * George Adam, Christos Bouras, Vaggelis Kapoulas, Andreas Papazois Computer Technology Institute & Press Diophantus N. Kazantzaki, Panepistimioupoli,
More informationHOSTED CONTACT CENTRE
HOSTED CONTACT CENTRE CO-BROWSING 9.4 Version 1.1 Hosted Contact Centre Co-browsing Confidentiality and Proprietary Statement This document is SaskTel s property and it is strictly confidential. Without
More informationDiscovering the Mobile Safari Platform
Introducing the iphone and ipod touch Development Platform The introduction of the iphone and subsequent unveiling of the ipod touch revolutionized the way people interacted with handheld devices. No longer
More informationIndex. Ray Nicholus 2016 R. Nicholus, Beyond jquery, DOI /
Index A addclass() method, 2 addeventlistener, 154, 156 AJAX communication, 20 asynchronous operations, 110 expected and unexpected responses, 111 HTTP, 110 web sockets, 111 AJAX requests DELETE requests,
More informationCOPYRIGHTED MATERIAL. Part I: Getting Started. Chapter 1: Introducing Flex 2.0. Chapter 2: Introducing Flex Builder 2.0. Chapter 3: Flex 2.
02671c01.qxd:02671c01 4/20/07 11:24 AM Page 1 Part I: Getting Started Chapter 1: Introducing Flex 2.0 Chapter 2: Introducing Flex Builder 2.0 Chapter 3: Flex 2.0 Basics Chapter 4: Using Flex Builder 2.0
More informationDESIGN AND IMPLEMENTATION OF SAGE DISPLAY CONTROLLER PROJECT
DESIGN AND IMPLEMENTATION OF SAGE DISPLAY CONTROLLER BY Javid M. Alimohideen Meerasa M.S., University of Illinois at Chicago, 2003 PROJECT Submitted as partial fulfillment of the requirements for the degree
More informationFIREFLY ARCHITECTURE: CO-BROWSING AT SCALE FOR THE ENTERPRISE
FIREFLY ARCHITECTURE: CO-BROWSING AT SCALE FOR THE ENTERPRISE Table of Contents Introduction... 2 Architecture Overview... 2 Supported Browser Versions and Technologies... 3 Firewalls and Login Sessions...
More informationCRAWLING THE CLIENT-SIDE HIDDEN WEB
CRAWLING THE CLIENT-SIDE HIDDEN WEB Manuel Álvarez, Alberto Pan, Juan Raposo, Ángel Viña Department of Information and Communications Technologies University of A Coruña.- 15071 A Coruña - Spain e-mail
More informationChapter 10 Web-based Information Systems
Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 dessloch@informatik.uni-kl.de Chapter 10 Web-based Information Systems Role of the WWW for IS Initial
More informationViewer 2.0. Shared Media one of the exciting improvements! 2010 Linden Lab 2
Viewer 2.0 Shared Media one of the exciting improvements! 2010 Linden Lab 2 Shared Media Brings the Web Into Second Life Web Pages Yes, Including Flash! Yes, even Flash video! Yes, on any surface! Yes,
More informationAjax Ajax Ajax = Asynchronous JavaScript and XML Using a set of methods built in to JavaScript to transfer data between the browser and a server in the background Reduces the amount of data that must be
More informationGroup 1. SAJAX: The Road to Secure and Efficient Applications. - Final Project Report -
Group 1 SAJAX: The Road to Secure and Efficient Applications - Final Project Report - Thu Do, Matt Henry, Peter Knolle, Ahmad Yasin George Mason University, 2006/07/15 SAJAX: The Road to Secure and Efficient
More informationSoftware Paradigms (Lesson 10) Selected Topics in Software Architecture
Software Paradigms (Lesson 10) Selected Topics in Software Architecture Table of Contents 1 World-Wide-Web... 2 1.1 Basic Architectural Solution... 2 1.2 Designing WWW Applications... 7 2 CORBA... 11 2.1
More informationDetects Potential Problems. Customizable Data Columns. Support for International Characters
Home Buy Download Support Company Blog Features Home Features HttpWatch Home Overview Features Compare Editions New in Version 9.x Awards and Reviews Download Pricing Our Customers Who is using it? What
More information1 Introduction. 2 Web Architecture
1 Introduction This document serves two purposes. The first section provides a high level overview of how the different pieces of technology in web applications relate to each other, and how they relate
More informationLive Guide Co-browsing
TECHNICAL PAPER Live Guide Co-browsing Netop develops and sells software solutions that enable swift, secure and seamless transfer of video, screens, sounds and data between two or more computers over
More information8/19/2018. Web Development & Design Foundations with HTML5. Learning Objectives (1 of 2) Learning Objectives (2 of 2) Helper Applications & Plug-Ins
Web Development & Design Foundations with HTML5 Ninth Edition Chapter 11 Web Multimedia and Interactivity Slides in this presentation contain hyperlinks. JAWS users should be able to get a list of links
More informationEmbracing HTML5 CSS </> JS javascript AJAX. A Piece of the Document Viewing Puzzle
Embracing HTML5 AJAX CSS JS javascript A Piece of the Document Viewing Puzzle Embracing HTML5: A Piece of the Document Viewing Puzzle For businesses and organizations across the globe, being able to
More informationCatching Events. Bok, Jong Soon
Catching Events Bok, Jong Soon Jongsoon.bok@gmail.com www.javaexpert.co.kr What Is an Event? Events Describe what happened. Event sources The generator of an event Event handlers A function that receives
More informationFive9 Plus Adapter for Agent Desktop Toolkit
Cloud Contact Center Software Five9 Plus Adapter for Agent Desktop Toolkit Administrator s Guide September 2017 The Five9 Plus Adapter for Agent Desktop Toolkit integrates the Five9 Cloud Contact Center
More informationReview of Previous Lecture
Review of Previous Lecture Network access and physical media Internet structure and ISPs Delay & loss in packet-switched networks Protocol layers, service models Some slides are in courtesy of J. Kurose
More informationJavaScript Programming
JavaScript Programming Course ISI-1337B - 5 Days - Instructor-led, Hands on Introduction Today, JavaScript is used in almost 90% of all websites, including the most heavilytrafficked sites like Google,
More informationIndex LICENSED PRODUCT NOT FOR RESALE
Index LICENSED PRODUCT NOT FOR RESALE A Absolute positioning, 100 102 with multi-columns, 101 Accelerometer, 263 Access data, 225 227 Adding elements, 209 211 to display, 210 Animated boxes creation using
More informationWelcome to our Moodle site! What is Moodle?
Welcome to our Moodle site! We are excited to introduce the use of this online e-learning platform in our "Get SMART FAST" Training Program! We believe the use of this virtual classroom and training format
More informationEnd User Monitoring. AppDynamics Pro Documentation. Version 4.2. Page 1
End User Monitoring AppDynamics Pro Documentation Version 4.2 Page 1 End User Monitoring....................................................... 4 Browser Real User Monitoring.............................................
More informationPresenting Online in Elluminate Live!
Presenting Online in Elluminate Live! There are many things you can do to deliver high-quality, highly-effective Elluminate Live! sessions. The following pages provide suggestions that you can use as you
More informationMinimum Requirements to Operate the Moderator and Client Modules
Minimum Requirements to Operate the Moderator and Client Modules Web Client HTML5 - Internet Explorer Version 8 and above - Mozilla Firefox - Google Chrome Version 24 - Safari (only Apple Mac OS) - Opera
More informationGetting Started with Blackboard
@ Getting Started with Blackboard Information Technology Services The College of Saint Rose Table of Contents What is Blackboard?... 2 Why do professors want to use Blackboard?... 2 Web browsers and hardware
More informationTutorial 8 Build resilient, responsive and scalable web applications with SocketPro
Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro Contents: Introduction SocketPro ways for resilient, responsive and scalable web applications Vertical scalability o
More informationExecution Architecture
Execution Architecture Software Architecture VO (706.706) Roman Kern Institute for Interactive Systems and Data Science, TU Graz 2018-11-07 Roman Kern (ISDS, TU Graz) Execution Architecture 2018-11-07
More informationVirtual Media & Entertainment House
Virtual Media & Entertainment House C. K. Yeo, B. S. Lee, V. Anand, Pathik Gupta, Arun Puri, Amol Dhabolkar School of Computer Engineering Nanyang Technological University Nanyang Avenue S 639798 Republic
More informationBrowsing the Semantic Web
Proceedings of the 7 th International Conference on Applied Informatics Eger, Hungary, January 28 31, 2007. Vol. 2. pp. 237 245. Browsing the Semantic Web Peter Jeszenszky Faculty of Informatics, University
More informationWe aren t getting enough orders on our Web site, storms the CEO.
In This Chapter Introducing how Ajax works Chapter 1 Ajax 101 Seeing Ajax at work in live searches, chat, shopping carts, and more We aren t getting enough orders on our Web site, storms the CEO. People
More informationCMSC 322 Computer Networks Applications and End-To- End
CMSC 322 Computer Networks Applications and End-To- End Professor Doug Szajda CMSC 332: Computer Networks Announcements Project 2 has been posted and is due Monday, February 8 (No extension!) Homework
More informationCS50 Quiz Review. November 13, 2017
CS50 Quiz Review November 13, 2017 Info http://docs.cs50.net/2017/fall/quiz/about.html 48-hour window in which to take the quiz. You should require much less than that; expect an appropriately-scaled down
More informationLibreOffice Online. client side development
LibreOffice Online client side development by Mihai Varga Consultant Software Engineer Intern +MihaiVarga13 mihai.varga@collabora.com @CollaboraOffice www.collaboraoffice.com A brief introduction LibreOffice
More informationWeb basics: HTTP cookies
Web basics: HTTP cookies Myrto Arapinis School of Informatics University of Edinburgh February 11, 2016 1 / 27 How is state managed in HTTP sessions HTTP is stateless: when a client sends a request, the
More informationAnalysis of Behavior of Parallel Web Browsing: a Case Study
Analysis of Behavior of Parallel Web Browsing: a Case Study Salman S Khan Department of Computer Engineering Rajiv Gandhi Institute of Technology, Mumbai, Maharashtra, India Ayush Khemka Department of
More informationTennessee. Trade & Industrial Course Web Page Design II - Site Designer Standards. A Guide to Web Development Using Adobe Dreamweaver CS3 2009
Tennessee Trade & Industrial Course 655745 Web Page Design II - Site Designer Standards A Guide to Web Development Using Adobe Dreamweaver CS3 2009 ation Key SE Student Edition LE Learning Expectation
More informationThe Multi-Principal OS Construction of the Gazelle Web Browser. Helen J. Wang, Chris Grier, Alex Moshchuk, Sam King, Piali Choudhury, Herman Venter
The Multi-Principal OS Construction of the Gazelle Web Browser Helen J. Wang, Chris Grier, Alex Moshchuk, Sam King, Piali Choudhury, Herman Venter Browser as an application platform Single stop for many
More informationAJAX: Rich Internet Applications
AJAX: Rich Internet Applications Web Programming Uta Priss ZELL, Ostfalia University 2013 Web Programming AJAX Slide 1/27 Outline Rich Internet Applications AJAX AJAX example Conclusion More AJAX Search
More informationDTV for Personalized Mobile Access and Unified Home Control
DTV for Personalized Mobile Access and Unified Home Control Jianlin Guo, Fernando Matsubara, Johnas Cukier, Haosong Kong Mitsubishi Electric Research Labs, 558 Central Avenue, Murray Hill, NJ 07974, USA
More informationWeb browser architecture
Web browser architecture Web Oriented Technologies and Systems Master s Degree Course in Computer Engineering - (A.Y. 2017/2018) What is a web browser? A web browser is a program that retrieves documents
More informationHow is state managed in HTTP sessions. Web basics: HTTP cookies. Hidden fields (2) The principle. Disadvantage of this approach
Web basics: HTTP cookies Myrto Arapinis School of Informatics University of Edinburgh March 30, 2015 How is state managed in HTTP sessions HTTP is stateless: when a client sends a request, the server sends
More informationEclipse as a Web 2.0 Application Position Paper
Eclipse Summit Europe Server-side Eclipse 11 12 October 2006 Eclipse as a Web 2.0 Application Position Paper Automatic Web 2.0 - enabling of any RCP-application with Xplosion Introduction If todays Web
More informationThis is a sample chapter of WebRTC: APIs and RTCWEB Protocols of the HTML5 Real-Time Web by Alan B. Johnston and Daniel C. Burnett.
This is a sample chapter of WebRTC: APIs and RTCWEB Protocols of the HTML5 Real-Time Web by Alan B. Johnston and Daniel C. Burnett. For more information or to buy the paperback or ebook editions, visit
More informationTHE NEW ERA OF WEB DEVELOPMENT. qooxdoo. Andreas Ecker, Derrell Lipman
THE NEW ERA OF WEB DEVELOPMENT qooxdoo Andreas Ecker, Derrell Lipman The Ajax Experience, 25-27 July 2007 1 Introduction Client-side JavaScript framework Professional application development Comprehensive
More informationAjax Ajax Ajax = Asynchronous JavaScript and XML Using a set of methods built in to JavaScript to transfer data between the browser and a server in the background Reduces the amount of data that must be
More informationJavaScript and Events
JavaScript and Events CS 4640 Programming Languages for Web Applications [Robert W. Sebesta, Programming the World Wide Web Jon Duckett, Interactive Frontend Web Development] 1 Events Interactions create
More informationCopyright and Trademark Information Trademarks Disclaimer; No Warranty
Copyright and Trademark Information Under the copyright laws, this document may not be copied, photocopied, reproduced, translated, or reduced to any electronic medium or machine-readable form, in whole
More informationLoad testing with WAPT: Quick Start Guide
Load testing with WAPT: Quick Start Guide This document describes step by step how to create a simple typical test for a web application, execute it and interpret the results. A brief insight is provided
More informationPLATO Learning Environment (v2.0) System and Configuration Requirements
PLATO Learning Environment (v2.0) System and Configuration Requirements For Workstations July 30, 2010 Windows XP Home and Professional (SP3) Windows Vista Home/Premium/Business/Ultimate Windows 7 Home/Premium/Business/Ultimate
More informationChapter 2: Application Layer. Chapter 2 Application Layer. Some network apps. Application architectures. Chapter 2: Application layer
Chapter 2 Application Layer Computer Networking: A Top Down Approach, 5 th edition. Jim Kurose, Keith Ross Addison-Wesley, April 2009. Chapter 2: Application Layer Our goals: conceptual, implementation
More informationCOURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3
COURSE OUTLINE MOC 20480: PROGRAMMING IN HTML5 WITH JAVASCRIPT AND CSS3 MODULE 1: OVERVIEW OF HTML AND CSS This module provides an overview of HTML and CSS, and describes how to use Visual Studio 2012
More informationGetting Started with Authoring in Claro
Getting Started with Authoring in Claro dominknow s Claro is a new breed of web- based authoring and publishing software designed for teams. This short guide helps you get started quickly as an author
More informationModern and Responsive Mobile-enabled Web Applications
Available online at www.sciencedirect.com ScienceDirect Procedia Computer Science 110 (2017) 410 415 The 12th International Conference on Future Networks and Communications (FNC-2017) Modern and Responsive
More informationargusoft A66, Sector 25, GIDC Electronic Estate, Gandhinagar, Gujarat , India Dumbarton Court, Newark, CA 94560, USA
ROOBROO DESKTOP COLLABORATION PLATFORM ARCHITECTURAL OVERVIEW AND CONFIGURATION HIGHLIGHTS PRESENTED BY: argusoft A66, Sector 25, GIDC Electronic Estate, Gandhinagar, Gujarat 382016, India 35463 Dumbarton
More informationContent Author's Reference and Cookbook
Sitecore CMS 7.0 Content Author's Reference and Cookbook Rev. 130425 Sitecore CMS 7.0 Content Author's Reference and Cookbook A Conceptual Overview and Practical Guide to Using Sitecore Table of Contents
More informationThe paper shows how to realize write-once-run-anywhere for such apps, and what are important lessons learned from our experience.
Paper title: Developing WebRTC-based team apps with a cross-platform mobile framework. Speaker: John Buford. Track: Mobile and Wearable Devices, Services, and Applications. Hello everyone. My name is John
More informationGetting Started with Adobe Connect Professional
Getting Started with Adobe Connect Professional Quick Reference Guide Remove technology barriers from traditional web conferencing and you get Adobe Acrobat Connect Professional 7. Connect Pro is a cutting
More informationCSC 4900 Computer Networks: End-to-End Design
CSC 4900 Computer Networks: End-to-End Design Professor Henry Carter Fall 2017 Villanova University Department of Computing Sciences Review In the last two lectures, we discussed the fundamentals of networking
More informationUsing Development Tools to Examine Webpages
Chapter 9 Using Development Tools to Examine Webpages Skills you will learn: For this tutorial, we will use the developer tools in Firefox. However, these are quite similar to the developer tools found
More informationWeb Programming Paper Solution (Chapter wise)
Introduction to web technology Three tier/ n-tier architecture of web multitier architecture (often referred to as n-tier architecture) is a client server architecture in which presentation, application
More informationELEC / COMP 177 Fall Some slides from Kurose and Ross, Computer Networking, 5 th Edition
ELEC / COMP 177 Fall 2012 Some slides from Kurose and Ross, Computer Networking, 5 th Edition Homework #1 Assigned today Due in one week Application layer: DNS, HTTP, protocols Recommend you start early
More informationVisual Presenter Visual Webcaster
) Visual Presenter Visual Webcaster Last Revised 8/3/11 Powered by Table of Contents Overview 3 System Requirements 4-5 Login 6 Main Menu 7 Preparing for the Event Presenter 8-12 Slides 13-20 URL s 21-23
More informationJavaScript & DHTML Cookbool(
SECOND EDITION JavaScript & DHTML Cookbool( Danny Goodman O'REILLY Beijing Cambridge Farnham Köln Paris Sebastopol Taipei Tokyo Table of Contents Preface xiii 1. Strings 1 1.1 Concatenating (Joining) Strings
More informationDeveloping ASP.NET MVC 5 Web Applications
Developing ASP.NET MVC 5 Web Applications Course 20486C; 5 days, Instructor-led Course Description In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework tools
More informationExploring Chrome Internals. Darin Fisher May 28, 2009
Exploring Chrome Internals Darin Fisher May 28, 2009 Simple interface, powerful core Modern browsers resemble the cooperatively multi-tasked operating systems of the past. Guiding sentiment, 2006 Goals
More information<Insert Picture Here>
Oracle Forms Modernization with Oracle Application Express Marc Sewtz Software Development Manager Oracle Application Express Oracle USA Inc. 540 Madison Avenue,
More informationEnd User Monitoring. AppDynamics Pro Documentation. Version Page 1
End User Monitoring AppDynamics Pro Documentation Version 4.1.5 Page 1 End User Monitoring....................................................... 4 Browser Real User Monitoring.............................................
More informationDeveloping ASP.NET MVC 4 Web Applications
Developing ASP.NET MVC 4 Web Applications Course 20486B; 5 days, Instructor-led Course Description In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5
More informationThis is the published version of a paper presented at Workshop on Innovative Mobile Applications of Context (IMAC) at MobileHCI 2006, Espoo, Finland.
http://www.diva-portal.org This is the published version of a paper presented at Workshop on Innovative Mobile Applications of Context (IMAC) at MobileHCI 2006, Espoo, Finland. Citation for the original
More informationEtanova Enterprise Solutions
Etanova Enterprise Solutions Front End Development» 2018-09-23 http://www.etanova.com/technologies/front-end-development Contents HTML 5... 6 Rich Internet Applications... 6 Web Browser Hardware Acceleration...
More informationINTERNET ENGINEERING. HTTP Protocol. Sadegh Aliakbary
INTERNET ENGINEERING HTTP Protocol Sadegh Aliakbary Agenda HTTP Protocol HTTP Methods HTTP Request and Response State in HTTP Internet Engineering 2 HTTP HTTP Hyper-Text Transfer Protocol (HTTP) The fundamental
More informationWeb basics: HTTP cookies
Web basics: HTTP cookies Myrto Arapinis School of Informatics University of Edinburgh November 20, 2017 1 / 32 How is state managed in HTTP sessions HTTP is stateless: when a client sends a request, the
More informationLECT 8 WEB SECURITY BROWSER SECURITY. Repetition Lect 7. WEB Security
Repetition Lect 7 LECT 8 WEB SECURITY Access control Runtime protection Trusted computing Java as basic model for signed code Trusted Computing Group TPM ARM TrustZone Mobile Network security GSM security
More informationType of Classes Nested Classes Inner Classes Local and Anonymous Inner Classes
Java CORE JAVA Core Java Programing (Course Duration: 40 Hours) Introduction to Java What is Java? Why should we use Java? Java Platform Architecture Java Virtual Machine Java Runtime Environment A Simple
More informationP2PSIP, ICE, and RTCWeb
P2PSIP, ICE, and RTCWeb T-110.5150 Applications and Services in Internet October 11 th, 2011 Jouni Mäenpää NomadicLab, Ericsson Research AGENDA Peer-to-Peer SIP (P2PSIP) Interactive Connectivity Establishment
More information729G26 Interaction Programming. Lecture 4
729G26 Interaction Programming Lecture 4 Lecture overview jquery - write less, do more Capturing events using jquery Manipulating the DOM, attributes and content with jquery Animation with jquery Describing
More informationIntroduction to Asynchronous Programming Fall 2014
CS168 Computer Networks Fonseca Introduction to Asynchronous Programming Fall 2014 Contents 1 Introduction 1 2 The Models 1 3 The Motivation 3 4 Event-Driven Programming 4 5 select() to the rescue 5 1
More informationNorthern Arizona University. Project Requirements. Bit Tag. Temitope Alaga, John Dance, Josh Frampton, Jun Rao CS 476. Version 1.0
Northern Arizona University Project Requirements Bit Tag Temitope Alaga, John Dance, Josh Frampton, Jun Rao CS 476 Version 1.0 Table of Contents Table of Contents Introduction Problem and Solution Statement
More informationCaptainCasa Enterprise Client. CaptainCasa Enterprise Client. CaptainCasa & Java Server Faces
CaptainCasa & Java Server Faces 1 Table of Contents Overview...3 Why some own XML definition and not HTML?...3 A Browser for Enterprise Applications...4...Java Server Faces joins the Scenario!...4 Java
More informationWeb Application with AJAX. Kateb, Faris; Ahmed, Mohammed; Alzahrani, Omar. University of Colorado, Colorado Springs
Web Application with AJAX Kateb, Faris; Ahmed, Mohammed; Alzahrani, Omar University of Colorado, Colorado Springs CS 526 Advanced Internet and Web Systems Abstract Asynchronous JavaScript and XML or Ajax
More informationDeploying Citrix MetaFrame with the FirePass Controller
Deployment Guide Deploying Citrix Presentation Server (MetaFrame) with the FirePass Controller Deploying Citrix MetaFrame with the FirePass Controller Welcome to the F5 FirePass controller Deployment Guide
More informationChecklist for Testing of Web Application
Checklist for Testing of Web Application Web Testing in simple terms is checking your web application for potential bugs before its made live or before code is moved into the production environment. During
More informationEnabling Full-Duplex Communications in APEX
Enabling Full-Duplex Communications in APEX Me Curt Workman - workmancw@ldschurch.org Education University of Utah Work Micron Electronics Evans&Sutherland The Church of Jesus Christ of Latter-Day Saints
More informationWebsite Report for facebook.com
Website Report for facebook.com Fife Website Design 85 Urquhart Crescent 07821731179 hello@fifewebsitedesign.co.uk www.fifewebsitedesign.co.uk This report grades your website on the strength of a range
More informationCOURSE 20486B: DEVELOPING ASP.NET MVC 4 WEB APPLICATIONS
ABOUT THIS COURSE In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5 tools and technologies. The focus will be on coding activities that enhance the
More information,
Weekdays:- 1½ hrs / 3 days Fastrack:- 1½hrs / Day [Class Room and Online] ISO 9001:2015 CERTIFIED ADMEC Multimedia Institute www.admecindia.co.in 9911782350, 9811818122 Welcome to one of the highly professional
More informationBlackboard Collaborate WCAG 2.0 Support Statement August 2016
Blackboard Collaborate WCAG 2.0 Support Statement August 2016 Overview The following Support Statement provides an evaluation of accessibility support levels for Blackboard s Collaborate (Ultra) based
More information