const connect = () => { if (sourceId) { const conn = peer.connect(sourceId, { reliable: true }); conn.on('open', () => { console.log('RTC data connection established - acting as receiver'); resolve(conn); }); conn.on('error', (error) => { reject(error); }); } else { peer.on('connection', (conn) => { conn.on('open', () => { console.log('RTC data connection established - acting as source'); resolve(conn); }); }); peer.on('error', (error) => { reject(error); }); } };
connect( id ) { const conn = this.peer.connect(id); return new Promise(( resolve, reject ) => { conn.on('open', () => { this._connect = conn; resolve(conn); }); conn.on('close', this.onDisconnect); }); }
componentDidMount() { const props = this.props this.setState({ review_id: props.match.params.id }) const peer = new Peer({ host: '/', path: '/peerjs', port: detectPort(window.location), // Set highest debug level (log everything!). debug: 3, }) peer.on('error', err => { console.error(err.type) }) const dataConnection = peer.connect(props.reviewer.reviewId) dataConnection.on('data', message => { switch(message.type) { case 'REVIEW_INFO': dataConnection.send({ type: 'REVIEWER', reviewer: { id: props.reviewer.id, name: props.reviewer.name } }) props.onConnectReview(message.review) break case 'FILE_RESPONSE': props.onReceiveFile(message.file) break case 'REVIEW/UPDATE_COMMENTS': props.onUpdateComments(message.comments) break } }) dataConnection.on('error', err => { console.error(err) }) this.setState({peer, dataConnection}) }
function setupController(player_name, hub_id) { $('.controller').removeClass('hidden') $(window).resize(function (event) { set_viewport_height() }) $('#fullscreen-toggle').click(function() { toggleFullScreen() }) var satellite = new Peer({ host: Settings.peerjs_host, port: Settings.peerjs_port, secure: Settings.using_https, debug: Settings.peerjs_debug_level }) hub_id = hub_id || 'test'; var dataConnection = satellite.connect(hub_id, { metadata: { player_name: player_name } }) $('#trackball-one').trackball({ onstart: function (data) { data.type = 'trackball'; dataConnection.send(data); }, onmove: function (data) { data.type = 'trackball'; dataConnection.send(data); }, onend: function (data) { dataConnection.send({ type: 'trackball', x: 0, y: 0 }); } }); $('#btn-a').on('touchstart mousedown', function (event) { dataConnection.send({ type: 'button_pressed', name: 'a' }); $(this).addClass('pressed'); absorb_event(event); }); $('#btn-a').on('touchend mouseup', function (event) { dataConnection.send({ type: 'button_released', name: 'a' }); $(this).removeClass('pressed'); absorb_event(event); }); dataConnection.on('data', function (data) { if (data.type == 'feedback') { navigator.vibrate([500]); } }); }