1// Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2// 3// Use of this source code is governed by a BSD-style license 4// that can be found in the LICENSE file in the root of the source 5// tree. An additional intellectual property rights grant can be found 6// in the file PATENTS. All contributing project authors may 7// be found in the AUTHORS file in the root of the source tree. 8// 9// This file exposes the api for the bot to connect to the host script 10// waiting a websocket connection and using dnode for javascript rpc. 11// 12// This file is served to the browser via browserify to resolve the 13// dnode requires. 14var WebSocketStream = require('websocket-stream'); 15var Dnode = require('dnode'); 16 17function connectToServer(api) { 18 var stream = new WebSocketStream("wss://localhost:8080/"); 19 var dnode = new Dnode(api); 20 dnode.on('error', function (error) { console.log(error); }); 21 dnode.pipe(stream).pipe(dnode); 22} 23 24// Dnode loses certain method calls when exposing native browser objects such as 25// peer connections. This methods helps work around that by allowing one to 26// redefine a non-native method in a target "obj" from "src" that applies a list 27// of casts to the arguments (types are lost in dnode). 28function expose(obj, src, method, casts) { 29 obj[method] = function () { 30 for (index in casts) 31 arguments[index] = new (casts[index])(arguments[index]); 32 src[method].apply(src, arguments); 33 } 34} 35 36window.expose = expose; 37window.connectToServer = connectToServer; 38