Untitled

mail@pastecode.io avatarunknown
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>