Połączenie dwóch zmiennych w nodejs socket.io

0

Witam,

Chciał bym aby zmienna z inputa o nazwie "name" wyświetlała się obok wiadomości. Nie mam pojęcia jak połączyć te dwie zmienne, proszę o rady.

Pozdrawiam, Kamil.

Kod #1:


   <ul id="messages"></ul>
 
   <form action="">
      <input id="name" autocomplete="off" value="Twój nick" />
      <input id="msg" autocomplete="off" /><button>Wyslij</button>
   </form>
 
 
 
     
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.js"></script>
<script>
var socket = io();
 
$('form').submit(function(){
   socket.emit('message', $('#msg').val());
   $('#msg').val('');
   $('#name').val('');
   return false;
});
 
socket.on('message', function(msg){
   $('#messages').append($('<li>').text(msg));
   $("html, body").scrollTop($(document).height());
});


Kod #2:


io.sockets.on('connection', function (socket) {
 
   console.log("Socket connected.");
    
   socket.on('message', function(msg){
     io.emit('message', msg);
     io.emit('nickname', nick);
   });
   
});


0

Twój emit po submicie forma wysyła jako drugi argument value inputa z wiadomością. Musisz tutaj jeszcze przesłać drugą wartość - nick. Zamiast value wstaw tutaj obiekt z wartościami name i message. Później w Node odwołujesz się po kropce jak do obiektu normalnie.
Nie musisz po stronie serwera robić dwóch emitów dla wiadomości i nazwy usera. Obiekty też mogą sobie fruwać emitami.

0

Trochę nie rozumiem, wartość obiektu jest zmienną więc jak to zrobić można prosić o przykłady?

0
Kamil__1337 napisał(a):

Trochę nie rozumiem, wartość obiektu jest zmienną więc jak to zrobić można prosić o przykłady?

Klient:

$('form').submit(function() {
   socket.emit('message', {
       content: $('#msg').val(),
       name: $('#name').val()
   });

   $('#msg').val('');
   $('#name').val('');

   return false;
});

socket.on('message', function(payload) {
   $('#messages').append($('<li>').text(payload.name + ": " + payload.content));
   $("html, body").scrollTop($(document).height());
}

Serwer:

io.sockets.on('connection', function (socket) {
   console.log("Socket connected.");
   socket.on('message', function(payload) {
     io.emit('message', payload);
   });
});

Choćby tak jak wyżej.

0

Nie wyświetla się nic tylko dodaje do adresu url /? - ip:3000/?

1 użytkowników online, w tym zalogowanych: 0, gości: 1