uniapp+vue3+node.js+socket.io-client实现简易聊天室功能

1,064 阅读2分钟

1.使用node.js及socket.io-client搭建服务端并建立实时通信连接

  1. 创建serves文件夹,使用npm init命令初始化,后执行npm i socket.io命令安装socket.io依赖包
  2. 新建app.js,按照惯例引入 http 和 express 模块,cors貌似可以解决跨域问题

image.png

3.创建服务器并进行简单但必要的配置:

image.png

4.引入socket.io并挂载服务器,有必要说明,node.js中的on和emit类似于vue中的消息中间件,on监听自定义事件,emit触发对应的自定义事件。如此,使用on监听connection即连接成功事件,回调方法具备形参,可用于后续的事件监听及触发。这里监听了disconnect和自定义的send事件以及broadcast事件,运行流程如下:

  • 客户端发送消息时触发send事件,并携带所发送的消息内容,服务端也就是这里监听on事件,获取到发送过来的消息内容。
    
  • 服务端收到客户端发送的消息后触发broadcast事件将消息内容广播出去,任何与此服务器建立socket连接的客户端只要监听了broadcast事件就都会收到通知,即收到其他客户端发送的消息
    

image.png

2.使用uniapp和socket.io-client搭建客户端

  1. 打开HbuliderX并新建vue3项目,新建终端,执行npm i socket.io-client命令安装客户端socket.io依赖包。
  2. 项目下新建utils文件夹,创建index.js文件,引入socket.io-client并创建socket实例。
  3. 搭建简易的聊天页面,完整代码放在这里(xiao-bing-tang/bingtang-MI (github.com))
  4. 在index.vue文件中创建onSocket方法,内部监听broadcast即服务端广播事件,在Mounted钩子函数上挂载,即可实现实时接受其他客户端消息的功能,随后将接收到的消息内容渲染在页面上。
  5. 创建sends方法,将本客户端发送的消息渲染在页面上的同时触发服务端的send事件,将消息内容发送给服务端以广播给其他客户端。

至此结束,一个简易的多端聊天功能就建成了,后续会继续完善如消息撤回、消息引用等功能~~~