Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

183
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda