diff --git a/examples/voip/README.md b/examples/voip/README.md new file mode 100644 index 000000000..1253d8000 --- /dev/null +++ b/examples/voip/README.md @@ -0,0 +1,9 @@ +To try it out, **you must build the SDK first** and then host this folder: + +``` + $ npm run build + $ cd examples/browser + $ python -m SimpleHTTPServer 8003 +``` + +Then visit ``http://localhost:8003``. diff --git a/examples/voip/browserTest.js b/examples/voip/browserTest.js new file mode 100644 index 000000000..53b19920c --- /dev/null +++ b/examples/voip/browserTest.js @@ -0,0 +1,89 @@ +"use strict"; +console.log("Loading browser sdk"); +var BASE_URL = "https://matrix.org"; +var TOKEN = "accesstokengoeshere"; +var USER_ID = "@username:localhost"; +var ROOM_ID = "!room:id"; + + +var client = matrixcs.createClient({ + baseUrl: BASE_URL, + accessToken: TOKEN, + userId: USER_ID +}); +var call; + +function disableButtons(place, answer, hangup) { + document.getElementById("hangup").disabled = hangup; + document.getElementById("answer").disabled = answer; + document.getElementById("call").disabled = place; +} + +function addListeners(call) { + var lastError = ""; + call.on("hangup", function() { + disableButtons(false, true, true); + document.getElementById("result").innerHTML = ( + "
Call ended. Last error: "+lastError+"
" + ); + }); + call.on("error", function(err) { + lastError = err.message; + call.hangup(); + disableButtons(false, true, true); + }); +} + +window.onload = function() { + document.getElementById("result").innerHTML = "Please wait. Syncing...
"; + document.getElementById("config").innerHTML = "" +
+ "Homeserver: "+BASE_URL+"
"+
+ "Room: "+ROOM_ID+"
"+
+ "User: "+USER_ID+"
"+
+ "
Ready for calls.
"; + disableButtons(false, true, true); + + document.getElementById("call").onclick = function() { + console.log("Placing call..."); + call = matrixcs.createNewMatrixCall( + client, ROOM_ID + ); + console.log("Call => %s", call); + addListeners(call); + call.placeVideoCall( + document.getElementById("remote"), + document.getElementById("local") + ); + document.getElementById("result").innerHTML = "Placed call.
"; + disableButtons(true, true, false); + }; + + document.getElementById("hangup").onclick = function() { + console.log("Hanging up call..."); + console.log("Call => %s", call); + call.hangup(); + document.getElementById("result").innerHTML = "Hungup call.
"; + }; + + document.getElementById("answer").onclick = function() { + console.log("Answering call..."); + console.log("Call => %s", call); + call.answer(); + disableButtons(true, true, false); + document.getElementById("result").innerHTML = "Answered call.
"; + }; + + client.on("Call.incoming", function(c) { + console.log("Call ringing"); + disableButtons(true, false, false); + document.getElementById("result").innerHTML = "Incoming call...
"; + call = c; + addListeners(call); + }); +}); +client.startClient(); diff --git a/examples/voip/index.html b/examples/voip/index.html new file mode 100644 index 000000000..a3259cfa1 --- /dev/null +++ b/examples/voip/index.html @@ -0,0 +1,26 @@ + + +browserTest.js
first.
+
+
+
+
+
+