Code Monkey home page Code Monkey logo

cloudbrowser's People

Contributors

ashimaathri avatar brianmcd avatar godmar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cloudbrowser's Issues

Protocol Compression

Thoughts:

  • Could compress on the fly with a lookup table
  • Should be toggleable.

Ms29

I โ™ฅ Be Famous And 29 It A Great Feeling

Logging infrastructure

Toggle-able, multi-level logging infrastructure.

Should be able to write to log file or stdout/stderr.

Chrome 14 and FF6 break DNode

As per: http://blog.chromium.org/2011/08/new-websocket-protocol-secure-and.html

The WebSocket protocol has been updated again. DNode uses an older version of socket.io for websockets, and that version doesn't support the new protocol. Newer versions of socket.io do support it, and offer an event driven API that gives similar functionality as DNode.

Issue: wait for substack to fix dnode, fix dnode ourselves, or replace dnode with our own protocol on top of the newest socket.io? The newest socket.io has API breaking changes, so simply changing dnode's package.json doesn't work.

Browser Instance Permissions

Need access control for browsers:

  • Restrict based on shared password.
  • Restrict based on OpenID username (assuming we can get that info).

Need different permission levels for clients on a browser:

  • Read-only: can view a co-browsing session, but events from that client aren't sent to server.
  • Read-write: can view a co-browsing session, and events from that client are sent to the server.

Add integration test that browses multiple pages.

Do this using clicks and with manually setting window.location in code. I think there might be an issue with how we bail out of the "previous" DOM when we set window.location to navigate an existing page.

Test Drive page

Integrated with OpenID.

Allow users to create private or public browsing instances.

  • users could specify specific e-mail addresses for private instances if we can get that info from an openID login.

Allow users to run a sample app.

Resource Proxy can't handle @import in CSS

@import statements in CSS can use relative URLs, but the ResourceProxy doesn't handle this. This causes jQuery UI demos to break, for example.

We need to parse the @import rules and re-write the CSS to use ResourceProxy URLs.

CSSOM can do some stylesheet processing, so we might be able to employ that.

First click on a checkbox doesn't work, the rest do

When running the jQuery test suites, if you click "Hide passed tests", it doesn't do anything on the first click, but then works as expected after that.

It also doesn't draw the X in the checkbox on the client, no matter what.

Browser Instance Persistence

We want to be able to save a Browser Instance, shut down the server, then come back later and restore everything.

Initial thoughts:

  • Serialize the DOM and save that snapshot.
  • Require scripts to export a save() method if that have state that needs to be restored. It should return an object that can be JSON.stringify'd and saved to a database.
  • Require scripts to export a restore() method that takes the return value from save and gets the script into the correct state.
  • Scripts that don't export save or restore just get re-run. Support libraries should be fine with this (like jQuery).

Refer to publicly accessible jquery-cloudbrowser

The .gitmodules file refers to url = [email protected]:jquery-cloudbrowser.git, which breaks make setup for people without access to theta.cs.vt.edu.

$ make setup
git submodule update --init
Submodule 'deps/jquery-cloudbrowser' ([email protected]:jquery-cloudbrowser.git) registered for path 'deps/jquery-cloudbrowser'
Initialized empty Git repository in /vagrant/cloudbrowser/deps/jquery-cloudbrowser/.git/
The authenticity of host 'theta.cs.vt.edu (128.173.237.152)' can't be established.
RSA key fingerprint is 86:35:2e:1f:c6:f9:93:f7:d2:7c:3e:17:ea:c1:c2:29.
Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'theta.cs.vt.edu,128.173.237.152' (RSA) to the list of known hosts.
[email protected]'s password:   C-c
make: *** wait: No child processes.  Stop.
make: *** Waiting for unfinished jobs....
make: *** wait: No child processes.  Stop.

Put each browser in its own process.

This will be required to get decent performance, since things like parsing HTML are large, blocking operations in JSDOM.

The BrowserManager will turn into a more important class, keeping track of a bunch of pipes most likely.
We might need to use something like redis to handle communication with the browsers, server, and clients.

document#location

Need to share the Location implementation between document and window. We currently only have it on the window. Should be a quick fix (maybe just defining getter/setter on document to proxy to window).

document.write doesn't have proper semantics in jsdom

The knockout unit tests rely on document.write inserting HTML in place. JSDOM doesn't do this, and it causes scripts to execute in the wrong order.

Current hack-fix is to remove the script injection to get knockout tests to run.

Better error handling in co-browsing mode.

When we run into errors, we should catch/report exceptions instead of crashing the server. Combing with the back/forward button, this should lead to much more robust co-browsing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.