Я создаю приложение чата с socket.io и nodejs. у меня есть эти проблемы - когда я обновляю страницу, добавляется еще один подключенный клиент - когда я отключаю, он не нарезается - когда я отправляю сообщение, оно не отображается в разделе "хорошо"
Я попытался изменить div «хорошо»
/сервер.js
var http = require('http');
var express = require('express'),
app = module.exports.app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server); //pass a http.Server instance
//now you can use app and io
users=[];
connections = [];
//server.listen(process.env.PORT || 3000); // this is another way of port listen
console.info('Server running...');
app.get('/', function (req, res){
res.sendFile(__dirname + '/index.html');
});
//create connections
io.on('connection', function(socket){
connections.push(socket);
console.info('connected: %s sockets connected', connections.length);
//disconnect /////////////////////// doesn't work ////////////////////////////
io.on('disconnection', function(data){
connections.slice(connections.indexOf(socket), 1);
console.info('disconnected: %s sockets connected', connections.length);
});
// send message
socket.on('send message', function (data){
console.info(data);
io.sockets.emit('new message', {msg: data});
});
});
server.listen(80); //listen on port 80
/client.html
<div class = "container">
<div class = "row">
<div class = "col-md-4">
<div class = "well">
<h3>Online Users</h3>
<ul class = "list-group" id = "users">
</ul>
</div>
</div>
<div class = "col-md-8">
<div class = "chat" id = "chat">
</div>
<form id = "messageForm" action = "index.html" method = "post">
<div class = "form-group">
<label> Enter Message</label>
<textarea class = "form-control" id = "message" name = "name" rows = "8" cols = "80"></textarea>
<br >
<input type = "submit" class = "btn btn-primary" name = "" value = "Send Message" />
</div>
</form>
</div>
</div>
</div>
/клиент js
<script src = "/socket.io/socket.io.js"></script>
<script>
$(function(){
var socket = io.connect();
var $messageForm = $('#messageForm');
var $message = $('#message');
var $chat = $('#char');
$messageForm.submit(function (e) {
e.preventDefault();
console.info('submitted');
socket.emit('send message', $message.val());
$message.val('');
});
socket.on('new message', function(data){
// $chat.append('<div class = "well">' +data.msg+ '</div>');
$chat.append('<ul class = "list-group" id = "users">' +data.msg+ '</ul>');
});
});
</script>
Я просто хочу поболтать.append(); работать.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Проблема здесь
var $chat = $('#char');
В вашем коде нет div с id char. Вы упомянули, что сообщение должно быть добавлено в div well, поэтому вы можете использовать
var $chat = $('#well');
или есть div с id chat
var $chat = $('#chat');
Голоса, отданные теми, у кого репутация менее 15, записываются, но не изменяют публично отображаемый результат публикации.
Попробуйте создать минимальный воспроизводимый пример, чтобы привлечь больше людей к ответу на ваш вопрос и лучше соответствовать нашим правилам как задать хороший вопрос.