|  | // Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 
|  | // | 
|  | // Use of this source code is governed by a BSD-style license | 
|  | // that can be found in the LICENSE file in the root of the source | 
|  | // tree. An additional intellectual property rights grant can be found | 
|  | // in the file PATENTS.  All contributing project authors may | 
|  | // be found in the AUTHORS file in the root of the source tree. | 
|  | // | 
|  | // This file exposes the api for the bot to connect to the host script | 
|  | // waiting a websocket connection and using dnode for javascript rpc. | 
|  | // | 
|  | // This file is served to the browser via browserify to resolve the | 
|  | // dnode requires. | 
|  | var WebSocketStream = require('websocket-stream'); | 
|  | var Dnode = require('dnode'); | 
|  |  | 
|  | function connectToServer(api) { | 
|  | var stream = new WebSocketStream("wss://localhost:8080/"); | 
|  | var dnode = new Dnode(api); | 
|  | dnode.on('error', function (error) { console.log(error); }); | 
|  | dnode.pipe(stream).pipe(dnode); | 
|  | } | 
|  |  | 
|  | // Dnode loses certain method calls when exposing native browser objects such as | 
|  | // peer connections. This methods helps work around that by allowing one to | 
|  | // redefine a non-native method in a target "obj" from "src" that applies a list | 
|  | // of casts to the arguments (types are lost in dnode). | 
|  | function expose(obj, src, method, casts) { | 
|  | obj[method] = function () { | 
|  | for (index in casts) | 
|  | arguments[index] = new (casts[index])(arguments[index]); | 
|  | src[method].apply(src, arguments); | 
|  | } | 
|  | } | 
|  |  | 
|  | window.expose = expose; | 
|  | window.connectToServer = connectToServer; |