window.addEventListener('load', () => { let sock = sockception.connect('ws://' + window.location.hostname + ':56657') sock.route('connected').receiveOne(() => { let updateHandler = () => {} sock.route('getStarts').send().receiveMany((res) => { startNewGame( res.value, {row: 0, col: 0}, handler => updateHandler = handler ) }) sock.route('getUpdates').send().receiveMany(res => updateHandler(res.value)) sock.route('getStops').receiveMany((res) => { setTimeout(console.log(res.value), 500) }) sock.route('getCurrent').send().receiveOne((res) => { if (res.value === null) { sock.route('start').send() } else { startNewGame( res.value.edges, res.value.update.pos, handler => updateHandler = handler ) } }) }) })
opentok.then(function(OT) { var wrappedInitPublisher = function(el) { return new Promise(function(resolve, reject) { var publisher = OT.initPublisher( el, {insertMode: 'append'}, function(err) { if (err) { reject(err); } else { resolve(publisher); } } ); listenForFirstChild(el).then(function(firstChild) { firstChild.style.width = ''; firstChild.style.height = ''; }); }); }; var baseSock = sockception.connect( 'ws://' + window.location.hostname + ':' + wsPort + '/', consoleLogger('sockception:') ); baseSock.route('connected').receiveOne(function() { var sock = baseSock.route('joinRoom').send(window.location.pathname); sock.route('userList').receiveMany(function(userList) { removeChildren(userListSection); userList.value.forEach(function(username) { var userDiv = document.createElement('div'); userDiv.appendChild(document.createTextNode(username)); userListSection.appendChild(userDiv); }); }); var publisherPromise = Promise.defer(); insistPrompt('Your name', '').then(function(username) { sock.route('username').send(username); document.querySelector('#streams-section').style.display = ''; publisherPromise.resolve(wrappedInitPublisher(document.querySelector('#your-stream'))); sock.route('isRunning').send().receiveOne(function(running) { if (!running.value) { waitForButton('Let\'s Begin').then(function() { sock.route('requestStart').send(); }); } }); }); sock.route('initOwnSession').receiveMany(function(ownSessionInfo) { console.log('ownSessionInfo', ownSessionInfo.value); var ownSession = OT.initSession(ownSessionInfo.value.apiKey, ownSessionInfo.value.id); ownSession.connect(ownSessionInfo.value.token, function(error) { if (error) { console.error('Error connecting: ', error.code, error.message); return; } publisherPromise.promise.then(function(publisher) { console.log('Publishing stream.'); ownSession.publish(publisher, function(err) { if (err) { throw err; } }); }); }); }); sock.route('initGame').receiveMany(function(gameSocket) { runGame(gameSocket, OT); }); sock.route('tournamentResult').receiveOne(function(tournamentResult) { alertify.alert(JSON.stringify(tournamentResult.value)); waitForButton('Let\'s Begin').then(function() { sock.route('requestStart').send(); }); }); }); });