Задать вопрос
@neodekvat09

Почему не приходят сообщения на клиент (socket.io)?

Написал чат, вроде всё должно работать, ну и работает, только не могу понять, почему сообщения просто не приходят. Т.е. данные из инпута не отображаются, точнее не передаются, так как их просто нет...

Код клиента:
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));
});


Код сервера:
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');
});
  • Вопрос задан
  • 620 просмотров
Подписаться 2 Оценить 12 комментариев
Решения вопроса 1
copist
@copist
Empower people to give
Тут ошибка
var input = $('message')


Надо наверное так
var input = $('#message')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы