RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical...

28
RCB: A Simple and Practical Framework for Real-time Collaborative Browsing Chuan Yue, Zi Chu, and Haining Wang The College of William and Mary

Transcript of RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical...

Page 1: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

RCB: A Simple and Practical Framework for Real-time Collaborative Browsing

Chuan Yue, Zi Chu, and Haining Wang

The College of William and Mary

Page 2: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

2

End-user Real-time Communication

Page 3: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

3

Document Sharing and Collaboration

Adobe Buzzword

Page 4: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

4

Web Browsing: Heavily Isolated

Page 5: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

5

Collaborative Browsing (Co-browsing)

Student Instructor Technician Customer Friend Friend

Page 6: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

6

Simple Co-browsing via URL sharing

•  E.g., instant messenger tools/browser extensions

•  Limited collaboration –  Can at most view webpages

•  Narrow scope of webpages –  Cannot access session-protected or dynamic webpages

http://www.usenix.org

Page 7: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

7

Complex Co-browsing via Screen Sharing

•  E.g., screen or application sharing software

•  High demands on network bandwidth and security –  Grant the control of a whole screen or application

Page 8: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

8

Specific Co-browsing Solutions

Depend on special

collaborative platforms

•  Server-based –  CWB

–  PageShare

Depend on site-specific

server modification

•  Proxy-based –  UsaProxy

–  CoWeb

–  PROOF

Depend on deployment

and trust of proxies

Platform Component

Platform Component

Server

•  Platform-based –  GroupWeb

–  GroupScape

–  SameSpace

Proxy

Page 9: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

9

Our RCB Solution

•  Pure browser-based solution

•  Simple and Practical

•  Almost everywhere, various webpages

•  Fine-grained, high-quality

Browser Extension

Regular Browser

Host Participant

Page 10: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

10

Outline

•  Introduction

•  Framework Design

•  Implementation

•  Evaluation

Page 11: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

11

RCB-Agent

Architecture of the RCB Framework

Host Browser

Cache

Participant Browser

Webpage head

body

Ajax-Snippet

Webpage

head

body

Web Servers

Ajax: Asynchronous JavaScript and XML

Page 12: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

12

Ajax-Snippet

A Typical RCB Co-browsing Session

1.  Start the agent

2.  Establish connection

3.  Visit a webpage

4.  Clone and modify

5.  Synchronize document

RCB-Agent

Host Participant

6.  Replace HTML elements

7.  Download object (non-cache)

8.  Download object (cache)

9.  Synchronize changes/actions

Repeat steps 3 ~ 9 !

Connection , Ajax , Object

http://AgentAddress:3000

Page 13: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

13

Three Design Decisions

•  Direct communication model

•  HTTP-based service model

•  Poll-based synchronization model

Ajax-Snippet RCB-Agent

Host Participant TCP Connection

HTTP Daemon

Ajax

Page 14: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

14

Co-browsing Topologies and Policies

•  Multiple participants, free join/leave, awareness

•  RCB-Agent enforces high-level policies

Ajax-Snippet RCB-Agent

Host Participant

Page 15: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

15

Security Design

•  Similar to visiting a trusted HTTP website

•  Protect RCB-Agent by authenticating requests –  HMAC (keyed-Hash Message Authentication Code)

Ajax-Snippet RCB-Agent

Host Participant

Page 16: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

16

Implementation Overview

•  RCB-Agent – Firefox Extension

– Pure JavaScript

– Possible for other browsers

•  Ajax-Snippet –  JavaScript objects/functions

– Support different browsers

Page 17: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

17

RCB-Agent Request Processing

•  Implement a server socket object –  Asynchronously accept new TCP connections

–  Asynchronously process HTTP requests

•  Three types of HTTP requests

Request

New connection

Object (cache mode)

Ajax polling (“POST”)

Data merging

Response generation

Page 18: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

18

RCB-Agent Response Content Generation

1.  Clone

2.  Change object URL (Relative Absolute)

3.  Change object URL (Absolute Agent)

4.  Rewrite event handler

5.  Generate response

<HTML>

……

</HTML>

HTML

XML

../image/example.gif http://www.site.com/image/example.gif

http://AgentAddress:3000/image/example.gif

onclick=“……” onsubmit=“……”

Page 19: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

19

Ajax-Snippet

•  Request Sending –  XMLHttpRequest

–  “POST”, asynchronous

•  Response Processing –  Clean up and set head

–  Clean up and set other

Participant Browser

Webpage head

body

Ajax-Snippet

Page 20: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

20

Evaluation of RCB

•  Performance Evaluation – The real-time performance of RCB

– LAN environment and WAN environment

•  Usability Evaluation – Whether RCB is helpful and easy to use

– Using Google Maps and shopping online

Page 21: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

21

Performance Evaluation

Ajax-Snippet RCB-Agent

Host Participant

Response Generation Max: 0.4 second

Content Update Max: 0.3 second

Transmission LAN: < 0.4 second WAN: < 10 seconds

20 homepages 1.8 GHz PCs

384Kbps

Page 22: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

22

Coordinating a Meeting Spot via Google Maps

•  Bob hosts

•  Alice joins

•  Bob may –  Search, zoom in/out,

drag, switch views

•  Alice sees same pages

Rich content, communication

intensive webpages

Page 23: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

23

Online Co-shopping at Amazon.com

•  Bob hosts

•  Alice joins

•  Bob or Alice may –  Type in, search, click,

fill/submit form

Dynamic/session-protected

webpages, various interactions

Page 24: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

24

Usability Evaluation

•  Twenty students come from nine degree programs

•  Ten pairs perform the two scenarios in a session

•  Observation and questionnaire results

0 10 20 30 40 50 60 70 80 90

100

Usefulness Ease-of-use (Host)

Ease-of-use (Participant)

Potential Usage

92.5% 90.0% 92.5% 85.0%

Agree or Strongly Agree

Page 25: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

25

Summary

•  Pure browser-based co-browsing solution

•  Simple and Practical

•  Implemented as a Firefox extension

•  Efficient, high-quality, helpful and easy to use

Thank You! [email protected]

http://www.cs.wm.edu/~cyue

Page 26: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

26

Backup Slides

Page 27: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

27

Security Design

•  Similar to visiting a trusted HTTP website

•  Protect RCB-Agent by authenticating requests –  HMAC (keyed-Hash Message Authentication Code)

Ajax-Snippet RCB-Agent

Host Participant

=?

Page 28: RCB: A Simple and Practical Framework for Real-time … · 2019-02-25 · Ajax-Snippet A Typical RCB Co-browsing Session 1. Start the agent 2. Establish connection 3. Visit a webpage

28

XML Format Response Content <?xml version=’1.0’ encoding=’utf-8’?> <newContent> <docTime>documentTimestamp</docTime> <docContent> <docHead> <hChild1><![CDATA[escape(hData1)]]></hChild1> <hChild2><![CDATA[escape(hData2)]]></hChild2> </docHead> <docBody><![CDATA[escape(bData)]]></docBody> </docContent> <userActions>userActionData</userActions> </newContent>