M8

Aus sipRTC
Version vom 6. März 2018, 14:18 Uhr von Admin (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Umsetzung Variante 1 == === Server === Der untenstehende Code ist leicht abgeändert, da für die Konfiguration für einen sicheren WebSocket-Server noch…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Umsetzung Variante 1

Server

Der untenstehende Code ist leicht abgeändert, da für die Konfiguration für einen sicheren WebSocket-Server noch weiterer Code nötig ist.

var calleeReady = false;

var WebSocketServer = require('ws').Server
  , wss = new WebSocketServer({ port: 4001 });

wss.on('connection', function connection(ws) {
  ws.on('message', function message(data) {
    if (data == 'calleeReady') {
      calleeReady = true;
    } else if (data == 'calleeBusy') {
      calleeReady = false;
    } else if (data == 'stateRequest') {
      if (calleeReady) {
        ws.send('calleeReady')
      } else {
        ws.send('calleeBusy')
      }
    }

    // Broadcast to everyone else.
    wss.clients.forEach(function each(client) {
      if (client !== ws) {
        client.send(data);
      }
    });
  });
});

Browser Apotheke

var connection = new WebSocket('wss://pbx.prbox.biz:4001');
	
// When the connection is open, send some data to the server
connection.onopen = function () {
  connection.send('Ping'); // Send the message 'Ping' to the server
};
	
connection.onclose = function() {
  connection.send('calleeBusy');
}

var userAgent = new SIP.UA( {
  // ... configuration of SIP UA
})

userAgent.on('connected', function() {
  connection.send('calleeReady');
  // rest of code when UA is connected to WSS
})

userAgent.on('disconnected', function() {
  connection.send('calleeBusy');
  // rest of code when UA is disconnected to WSS
})

userAgent.on('invite', function(session) {
  connection.send('calleeBusy');
  // rest of code when INVITE is received
});

window.onunload = function() {
  connection.send('calleeBusy');
}

Browser Besucher

<p>
  <input id="calleeState" />
</p>

var connection = new WebSocket('wss://pbx.prbox.biz:4001');
	
connection.onopen = function () {
  connection.send('stateRequest'); // Request state of callee
};

connection.onmessage = function (e) {
  if (e.data == 'calleeReady') {
    $('#calleeState').val('Callee Ready');
    $('#calleeState').css("background-color", "#0F0");
  } else if (e.data == 'calleeBusy') {
    $('#calleeState').val('Callee Busy');
    $('#calleeState').css("background-color", "#F00");
  }
};