vue.js+socket.io+express+mongodb打造在线聊天

在线地址观看

http://www.chenleiming.com

github地址

https://github.com/ClmPisces/...

有喜欢的小哥哥,小姐姐请反手来个star,谢谢!有issue的欢迎提出

介绍
本项目基于vue.js+socket.io+express+mongodb实现的聊天效果, 界面以及功能参考QQ,微信
技术栈

  • 前端: vue,vue-router,vuex,axios
  • 构建: webpack,vue-cli
  • 后端: express,multer(上传图片),cors(跨域处理), superagent(调用机器人接口),mongoose(操作数据库)
  • 通讯: socket.io
  • 数据库: mongodb
  • css预处理器: sass

功能列表

  • 用户注册
  • 用户登录
  • 群聊
  • 群聊中@小美 和机器人聊天 (注意@小美和消息中间要有空格)
  • 机器人聊天
  • 留言板

聊天代码
前端

        // 聊天监听
        this.socket.on('chat-msg', (msg) => {
            this.MsgList.push(msg)
            this.$nextTick(() => {
                this.msgDOM.scrollTop = this.msgDOM.scrollHeight
            })
        })
       // 发送消息
       const MsgObj = {
            roomId: this.roomId,
            timeStamp: Date.parse(new Date()),
            userId: this.getUserinfo.userId,
            headPic: this.getUserinfo.headPic,
            nickname: this.getUserinfo.nickname,
            text: this.InputMsg
        }
        this.socket.emit('chat-msg', MsgObj)
        this.InputMsg = ''

后端

 
    // 进入房间
    socket.on('join-room', (info) => {
        // 添加到房间
      socket.join(info.roomId)
      io.to(info.roomId).emit('join-room', info.nickname)
    })
    // 群聊天
  socket.on('chat-msg', (msg) => {
    saveChatMsg(msg)
    // 分割聊天消息,判断是否与机器人聊天
    const msgArr = msg.text.split(' ')
    if (msgArr[0] === '@小美') {
      getRobotMsg({userId: msg.userId, roomId: msg.roomId, text: msgArr[1]}, (robotmsg) => {
        saveChatMsg(robotmsg)
        io.to(msg.roomId).emit('chat-msg', robotmsg)
      })
    }
    io.to(msg.roomId).emit('chat-msg', msg)
  })
  // 机器人聊天
  socket.on('robot-msg', (msg) => {
    getRobotMsg({userId: msg.userId, text: msg.text}, (robotmsg) => {
      socket.emit('robot-msg', robotmsg)
    })
  })

最新文章

  1. 漫扯:从polling到Websocket
  2. T-SQL检查停止的复制作业代理,并启动
  3. 查看数据库中没有进行comment的字段
  4. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q72-Q74)
  5. AD 10 原理图编译错误
  6. iOS - UIRefreshControl 刷新数据
  7. leetcode 题解Merge Two Sorted Lists(有序链表归并)
  8. mysql并发复制系列 一:binlog组提交
  9. flume从kafka读取数据到hdfs中的配置
  10. 使用django-compressor压缩静态文件
  11. javaWeb学习总结(5)- HttpServletRequest应用
  12. Uva 1599 Ideal Path - 双向BFS
  13. Oracle执行计划学习笔记
  14. android新窗口以及传值
  15. 2016(5)系统设计,web应用
  16. [转帖]SAP一句话入门:Plant Maintenance
  17. Javaweb学习笔记——(二十)——————Javaweb监听器、国际化
  18. 解决 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L的问题
  19. Java之从头开始编写简单课程信息管理系统
  20. 深入理解JAVA集合系列一:HashMap源码解读

热门文章

  1. RabbitMQ教程C#版 - Hello World
  2. IT企业如何实现项目管理信息化的目标
  3. 微信小程序之生成图片分享
  4. 如何为开发项目编写规范的README文件(windows),此文详解
  5. 解决新电脑的系统安装问题:针对BIOS的UEFI模式
  6. centos7上安装ELK
  7. 使用python读取word,写入execl
  8. generator生成器iterator遍历器和yield
  9. 归并排序(非递归,Java实现)
  10. Java基础_Java概述