Как добавить чат и отобразить класс колодца в socket.io? - PullRequest
0 голосов
/ 19 февраля 2019

Я создаю приложение чата с socket.io и nodejs.У меня есть эти проблемы - когда я обновляю страницу, она добавляет другого подключенного клиента - когда я отключаю, он не разрезается - когда я отправляю сообщение, оно не появляется в div "хорошо"

Я пыталсяизменить div 'well'

/ server.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.log('Server running...');

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

//create connections
io.on('connection', function(socket){
    connections.push(socket);
    console.log('connected: %s sockets connected', connections.length);

    //disconnect /////////////////////// doesn't work ////////////////////////////
io.on('disconnection', function(data){
        connections.slice(connections.indexOf(socket), 1);
        console.log('disconnected: %s sockets connected', connections.length);
});

  // send message
    socket.on('send message', function (data){
      console.log(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>

/ client 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.log('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> 

Я просто хочу в chat.append ();работать.

1 Ответ

0 голосов
/ 19 февраля 2019

Проблема здесь

   var $chat = $('#char');

Ваш код не имеет div с идентификатором char.Вы упомянули, что сообщение должно быть добавлено в div well, поэтому вы можете использовать

var $chat = $('#well');

или есть div с id chat

var $chat = $('#chat');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...