Browser Service Proxy

Create a proxy for a service instance that exists in a different page.

Usage

(Written in Typescript) Lets say we have the following Mock service:

export class MockService { public mockMethod ( param ? : any ) { return new Promise ( resolve => setTimeout ( ( ) => resolve ( param ) , 100 ) ) ; } }

and we want to use an instance of it that exists within a different page that might be in a different domain.

Service Proxy in the Main page

import { createProxy } from " browser-service-proxy " ; import { MockService } from " ./common " ; ( async function main ( ) { const proxy = await createProxy ( ' http://different-domain.com:8080/example/service.html ' ) ; let result = await proxy . sendRequest ( ' mockMethod ' , [ 42 ] ) ; const mockProxy = proxy . wrapWith ( MockService ) ; result = await mockProxy . mockMethod ( 42 ) ; } ) ( ) ;

Service Listener in another page

(according to our example, it'll will be in http://different-domain.com:8080/example/service.html)

import { createListener } from " browser-service-proxy " ; import { MockService } from " ./common " ; const service = new MockService ( ) ; ( async ( ) => { const listener = await createListener ( service ) ; listener . listen ( ) ; } ) ( ) ;

Advanced customization for Service Listener

listener . listen ( { initial : ' everything is awesome ' } ) ; let cancelStop = true ; listener . stopCancellers . push ( async ( ) => { await delay ( 10 ) ; if ( cancelStop ) { cancelStop = false ; return { cancelReason : ' fun ' } ; } else { return false ; } } ) ; listener . onStop = ( ) => ( { goodbye : ' so long, travel safe ' } ) ;

Running the example

Add to your hosts file the following entry: 127.0.0.1 different-domain.com

Run npm run example

Open you browser at localhost:8080/example/main.html

Open dev tools

Notes