socket.io并从mongodb

时间:2017-08-30 19:55:54

标签: node.js mongodb mongoose socket.io

我正在编写一个简单的消息传递应用程序,我的大部分都在工作。我目前正在尝试检索保存到我的数据库中的旧邮件,并将其显示在我的应用程序中。

server.js

io.sockets.on('connection', function(socket) {
   Chat.find({}, function(err, docs) {
      if(err) throw err;
      console.log('sending previous messages');
      socket.emit("load old messages", docs);
   });

    socket.on('new user', function(data, callback){
        if (data in users){
            callback(false);
        } else{
            callback(true);
            socket.nickname = data;
            users[socket.nickname] = socket;
            updateNicknames();
        }
    });

的messaging.html 只是javascript

<script>
    jQuery(function($){
        var socket = io.connect();
        var $nickForm = $('#setNick');
        var $nickError = $('#nickError');
        var $nickBox = $('#nickname');
        var $users = $('#users');
        var $messageForm = $('#send-message');
        var $messageBox = $('#message');
        var $chat = $('#chat');

        $nickForm.submit(function(e){
            e.preventDefault();
            socket.emit('new user', $nickBox.val(), function(data){
                if(data){
                    $('#nickWrap').hide();
                    $('#contentWrap').show();
                } else{
                    $nickError.html('That username is already taken!  Try again.');
                }
            });
            $nickBox.val('');
        });

        socket.on('usernames', function(data){
            var html = '';
            for(var i=0; i < data.length; i++){
                html += data[i] + '<br/>'
            }
            $users.html(html);
        });

        $messageForm.submit(function(e){
            e.preventDefault();
            socket.emit('send message', $messageBox.val(), function(data){
                $chat.append('<span class="error">' + data + "</span><br/>");
            });
            $messageBox.val('');
        });

        socket.on('load old msgs', function(docs) {
            for (var i=0; i < docs.length; i++) {
                displayMsg(docs[i]);
            }
        });

        socket.on('new message', function(data){
            displayMsg(data);

        });

        function displayMsg (data) {
            $chat.append('<span class="msg"><b>' + data.nick + ': </b>' + data.msg + "</span><br/>");
        }

        socket.on('whisper', function(data){
            $chat.append('<span class="whisper"><b>' + data.nick + ': </b>' + data.msg + "</span><br/>");
        });
    });
</script>

这行代码应该从服务器检索并显示旧消息,但它不起作用:

socket.on('load old msgs', function(docs) {
            for (var i=0; i < docs.length; i++) {
                displayMsg(docs[i]);
            }
        });

这是代码中给我带来麻烦的部分,因为我正在获取名为Chat并尝试发送给我的用户端的API。但是,在我的控制台日志中,从服务器端代码,它确实说发送旧消息,所以我猜它工作正常,即使不确定。这给我带来了很长时间的麻烦,我需要帮助。

1 个答案:

答案 0 :(得分:1)

I think you have a mismatch on events here:

plt.show()

It should be:

line_ani.save("animation.mp4")