N
N
neodekvat092015-09-08 18:12:23
JavaScript
neodekvat09, 2015-09-08 18:12:23

Why are messages not coming to the client (socket.io)?

I wrote a chat, everything seems to work, well, it works, but I can’t understand why the messages just don’t come. Those. data from the input is not displayed, more precisely, it is not transmitted, since it simply does not exist ...

Client code:

var nickname = prompt('What\s your name ?'),
    socket = io(),
    messages = $('#messages');

socket.emit('join', nickname);
var newMessage = function(data) {
    var who = $('<span class="who">').text(data.nickname + ': '),
        message = $('<span class="msg">').text(data.msg),
        final = $('<li>').append(who).append(message);

    messages.append(final);
};

$('form').submit(function() {
    var input = $('message'),
        data = { msg: input.val(), nickname: nickname };

    socket.emit('msg', data);
    newMessage(data);
    input.val('');
    return false;
});

socket.on('msg', function(data) { newMessage(data); });

socket.on('notice', function(msg) {
    // messages.prepend($('<li>').text('notice: ' + msg));
    messages.append($('<li>').text('notice: ' + msg));
});


Server code:
var express = require('express'),
    app = express(),
    http = require('http').Server(app),
    io = require('socket.io')(http);

app.use(express.static(__dirname));

app.get('/', function(req, res) {
    res.sendFile('index.html');
    // res.render('index.html');
});

io.on('connection', function(socket) {
    socket.on('join', function(nickname) {
        socket.nickname = nickname;
        console.log(nickname + ' was connected');
        socket.broadcast.emit('notice', nickname + ' has joined to the chat.');
        // socket.emit('notice', nickname + ' has joined to the chat.');
    });
    socket.on('disconnect', function() {
        console.log(socket.nickname + ' was disconnected');
        socket.broadcast.emit('notice', socket.nickname + ' has left from the chat.');
        // socket.emit('notice', socket.nickname + ' has left from the chat.');
    });
    socket.on('msg', function(data) {
        socket.broadcast.emit('msg', data);
        // console.log('Message: ' + data.msg);
        // socket.emit('msg', data);
    });
});

http.listen(3000, function() {
    console.log('listen on *:3000');
});

Answer the question

In order to leave comments, you need to log in

1 answer(s)
P
Pavel Volintsev, 2015-09-08
@neodekvat09

There's an error
It should probably be
var input = $('#message')

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question