This is a simple push-to-talk implementation based on Websockets. It includes both the server and client implementation.
It can be used to broadcast voice-messages in real-time to multiple users, that are subscribed to the same channel.
Client implementation is only supported on Web-browsers, that provide AudioContext and MediaRecorder. Web-App was tested on Chrome & Firefox (for Desktop & Android).
- does not work in any ios browsers
This project was implemented using Node.js
- install npm (node package manager)
- install dependencies in project
$ npm install
- run with
$ npm start
As of recently (Oct 2019), Firefox and Chrome prohibited the access to the microphone without https connection. In order to test full functionality use localtunnel.
Usage of this api can be found in index.js
var myPttButton = document.querySelector('#btn-record');
var subscribeButton = document.querySelector("#btn-subscribe");
var channelInput = document.querySelector("#input-channel");
var channel;
ptt.connect().then((connection)=>{
connection.bind(myPttButton);
function handleSubscribeSuccess(response){
console.log(`Subscribed to channel '${channel}'`);
}
function handleError(){
console.log("Could not subscribe!");
}
subscribeButton.onclick = (e)=>{
if(channelInput.value.trim().length > 0){
channel = channelInput.value.trim();
connection.subscribe(channel).then(handleSubscribeSuccess).catch(handleError);
channelInput.value = "";
}
};
}).catch(err=>{
console.log("Connection failed!");
});
https://ptt-demo.herokuapp.com
docker run --rm -d -p 8383:8383 kchaitanya863/ptt
-v /home/ubuntu/temp/server.key:/usr/src/app/ssl/server.key
-v /home/ubuntu/temp/server.crt:/usr/src/app/ssl/server.crt
see PTT for Android
see PTT for iOS