Untitled
plain_text
6 days ago
2.2 kB
2
Indexable
Never
<!DOCTYPE html> <html> <head> <title>Voice Chat</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js"></script> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <h1>Voice Chat</h1> <div id="call"> <div id="status"></div> <div id="audio-grid"></div> </div> <script> $(document).ready(function() { var socket = io(); socket.on('connect', function() { var username = prompt('Enter your username:'); var room = prompt('Enter the call room name:'); socket.emit('join', {'username': username, 'room': room}); }); socket.on('status', function(data) { $('#status').text(data.msg); }); navigator.mediaDevices.getUserMedia({ audio: true }) .then(function(stream) { var audioContext = new AudioContext(); var audioSource = audioContext.createMediaStreamSource(stream); var audioProcessor = audioContext.createScriptProcessor(1024, 1, 1); audioProcessor.onaudioprocess = function(event) { var audioData = event.inputBuffer.getChannelData(0); socket.emit('audio', {'username': username, 'room': room, 'audio': audioData}); }; audioSource.connect(audioProcessor); audioProcessor.connect(audioContext.destination); }) .catch(function(error) { console.log('Error accessing microphone:', error); }); socket.on('audio', function(data) { var username = data.username; var audioData = data.audio; // Process and play the received audio data // ... }); $(window).on('beforeunload', function() { socket.emit('leave'); }); }); </script> </body> </html>