Beispiel #1
0
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
                )
            }
        })
    })
})
Beispiel #2
0
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();
      });
    });
  });
});