| // 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; |