Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

185
Views
Print array in node js server

Hi I have a website from witch I can send a message to node js server and there the message is saved in a a array. When a new message is sent to the server the old message in the array is overwritten by the new message. The array has to contain new and old messages. The output of console after sending message

const http = require('http');
const { Socket } = require('socket.io');
const WebSocketServer = require('websocket').server;
var steviloSporocil = 0;
const sporocila=[];

const server = http.createServer();
console.log('Server is on port 3000')
server.listen(3000);

const wsServer = new WebSocketServer({
    httpServer: server
});

wsServer.on('request', function(request) {
    const connection = request.accept(null, request.origin);

    connection.on('message', function(message) {
        sporocila[steviloSporocil]=[message.utf8Data];
        steviloSporocil++;
        for (let i = 0; i < steviloSporocil; i++) {
            connection.sendUTF(sporocila[i]);
            console.log('Received Message:', sporocila[i]);
        }

    });

    connection.on('close', function(reasonCode, description) {
        console.log('Client has disconnected.');
    });
});
<?php ob_start() ?>
    <?php $titel="Chat"; ?>

    <div class="chat-main" id="text"></div>

    <form name='form' method='post' class="form">
        <div class="form-group">
            <input type="text" class="form-control" id="textbox" name="chat" placeholder="Chat">
            <button type="button" class="btn btn-primary" name="gumb" id="gumb" onclick="Poslji()" autocomplete="off">Send</button>
        </div>
        </form>
        <script>
            function Poslji(){
                const ws = new WebSocket('ws://localhost:3000'); 
                ws.onopen = function() {
                    console.log('WebSocket Client Connected');
                    ws.send(document.getElementById('textbox').value);
                };
            
                ws.onmessage = function(e) {
                    console.log("Received: '" + e.data + "'");
                    document.getElementById('text').innerHTML=e.data;
                };   
            }
    </script>
<?php 
    $content=ob_get_clean();
    require "layout.html.php";
?>

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

If I understood everything, here how to solve your problem: you take all previous message at the specified index and add the new one at the end. If you want to add it at the top, then just invert the two lines.

sporocila[steviloSporocil] = [
  ...sporocila[steviloSporocil],
  message.utf8Data
];
about 4 years ago · Juan Pablo Isaza Report

0

You are sending the messages in the array to the client separately using a for-loop and connection.sendUTF(sporocila[i]); and then displaying the last message received using document.getElementById('text').innerHTML=e.data;.

Are you suprised then that your website only shows the last item in the array?

Why not send the entire array using JSON.stringify and then JSON.parse on the client?

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!