WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

JavaScript · Expert · question 79 of 100

How do you implement real-time communication in JavaScript applications using technologies like WebSockets or WebRTC?

📕 Buy this interview preparation book: 100 JavaScript questions & answers — PDF + EPUB for $5

Real-time communication is an important aspect of many modern web applications, and there are several technologies available for implementing it in JavaScript applications. Two popular options are WebSockets and WebRTC.

WebSockets allow for bidirectional communication between a client and a server over a single TCP connection. This allows for real-time data exchange between the client and server, without the need for repeated HTTP requests. WebSockets are well-suited for applications that require frequent updates or push notifications, such as chat applications or real-time analytics dashboards.

Here’s an example of how to use WebSockets in JavaScript:

    // Create a new WebSocket connection
    const socket = new WebSocket('ws://localhost:3000');
    
    // Handle the socket open event
    socket.addEventListener('open', event => {
        console.log('WebSocket connection established');
    });
    
    // Handle incoming messages from the server
    socket.addEventListener('message', event => {
        console.log(`Received message from server: ${event.data}`);
    });
    
    // Send a message to the server
    socket.send('Hello, server!');

WebRTC, on the other hand, is a set of browser APIs that enable real-time peer-to-peer communication between web browsers. This allows for applications like video conferencing or screen sharing without the need for a server intermediary. WebRTC uses a combination of peer-to-peer networking, codecs for media encoding and decoding, and APIs for signaling to establish connections between browsers.

Here’s an example of how to use WebRTC in JavaScript:

    // Get the user's media stream (e.g. video and audio)
    navigator.mediaDevices.getUserMedia({ video: true, audio: true })
    .then(stream => {
        // Create a new RTCPeerConnection
        const peerConnection = new RTCPeerConnection();
        
        // Add the user's media stream to the connection
        stream.getTracks().forEach(track => {
            peerConnection.addTrack(track, stream);
        });
        
        // Handle incoming data from the remote peer
        peerConnection.addEventListener('datachannel', event => {
            const dataChannel = event.channel;
            dataChannel.addEventListener('message', message => {
                console.log(`Received message from remote peer: ${message.data}`);
            });
        });
        
        // Create a new data channel for sending data to the remote peer
        const dataChannel = peerConnection.createDataChannel('myDataChannel');
        dataChannel.addEventListener('open', event => {
            console.log('Data channel opened');
        });
        
        // Create an offer to start the connection
        peerConnection.createOffer()
        .then(offer => {
            // Set the local description and send it to the remote peer
            return peerConnection.setLocalDescription(offer);
        })
        .then(() => {
            // Send the offer to the remote peer (e.g. using a signaling server)
            const offerData = JSON.stringify(peerConnection.localDescription);
            // ... send offerData to remote peer ...
        });
    });

Overall, both WebSockets and WebRTC provide powerful mechanisms for implementing real-time communication in JavaScript applications, and choosing the right technology will depend on the specific requirements of the application.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic JavaScript interview — then scores it.
📞 Practice JavaScript — free 15 min
📕 Buy this interview preparation book: 100 JavaScript questions & answers — PDF + EPUB for $5

All 100 JavaScript questions · All topics