M8
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…“)
Inhaltsverzeichnis
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");
}
};