如果不刷新页面,Socket IO将无法正常工作-Vue JS

时间:2018-10-15 06:10:16

标签: node.js socket.io vuejs2

我在客户端和服务器之间建立了一个聊天窗口,一切都很好,但是聊天页面需要刷新以显示最近的消息。我使用两种不同的登录名进行了测试,但是刷新的页面可以正常工作,但是另一个页面没有使用最新的消息进行更新

Server.js

io.on('connection', (socket) => {
   console.log("---- client connected ----");

   // send messages on every event
   sendStatus = function (data) {
      socket.emit('messages', data);
   }

   // get messages from the server
   socket.on('send_message', function (data) {
      new Chat({
        user_id: data.user_id,
        message: data.message,
        date: data.date,
      }).save(function(err, chat_data){
        if (!err) {
            Chat.findOne({ _id: chat_data._id }).populate('user_id').exec(function (err, chat) {
                sendStatus(chat);
            })
        }
     });
   })

  // send messages on load
  Chat.find({}).populate('user_id').exec(function (err, chat) {
     console.log('chattttttttt', chat)
     socket.emit('onload_chat', chat);
  })
})

Client.vue

 mounted () {
    this.getUsers()

    this.$socket.on('messages', (data)=> {
      this.chats.push(data)
      console.log('on send message', data)
    });
},
beforeMount () {
    this.$socket.on('onload_chat', (data)=> {
      this.chats = data
    });
},

0 个答案:

没有答案