Websocket实现发送群聊信息

本文介绍了如何在后端使用socket.io与前端Vue.js配合,实现用户间的即时通讯和群聊功能,包括用户连接、消息广播、私聊以及前端的基本交互设计。作者还分享了项目中遇到的问题和收获,强调了网络程序设计课程对Web应用开发的重要性。
摘要由CSDN通过智能技术生成

配置

后端使用socket.io,前端使用vue,实现用户与用户之间的通讯,以及群聊功能的实现

Socket.io介绍

io.on('connection', (socket) => {
  console.log('a user connected');
  socket.on('disconnect', () => {
    console.log('user disconnected');
  });
});

上述代码用于模拟用户登录时的状态,当用户登录上3000端口,将打印a user connected。

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io();

  var form = document.getElementById('form');
  var input = document.getElementById('input');

  form.addEventListener('submit', function(e) {
    e.preventDefault();
    if (input.value) {
      socket.emit('chat message', input.value);
      input.value = '';
    }
  });
</script>

上述代码时官网给出的建议的前端模块,用于接收用户输入的信息,如果submit被触发,那么将会调用emit中的chat message事件。

io.on('connection', (socket) => {
  socket.on('chat message', (msg) => {
    console.log('message: ' + msg);
  });
});

此时控制台会输出input中的信息。
那么根据socket.io的引导,如何实现广播也呼之欲出了。

io.on('connection', (socket) => {
  socket.on('chat message', (msg) => {
    io.emit('chat message', msg);
  });
});

那么实现私聊功能,即调用io.to()即可

socket.on('privateChat',data=>{
        io.sockets.sockets.forEach(iss=>{
            if(iss.name==data.receiver){
                data.type='user';
                io.to(iss.id).emit('updateChatMessageList',data);
            }
        });
    });

前端介绍

由于本人不会前端,本项目前端界面参考这里
前端所做的主要工作为:1. 用户认证与登录: 在用户访问聊天室前,需要进行用户认证和登录。这可以通过用户名和密码等凭证来实现。你可以使用Vue.js的路由守卫等机制来确保用户在未登录的情况下无法访问聊天室。
2. Socket.io连接: 使用Vue.js中的生命周期钩子或,初始化Socket.io连接。在连接建立后,服务器将生成一个唯一的用户标识符,并将其发送回客户端。
3. 存储用户ID: 将接收到的用户ID存储在Vue组件的数据中,以便后续使用。可以使用Vue的data属性来管理组件的状态。
4. 用户进入聊天室: 当用户进入聊天室时,需要发送存储的用户ID到服务器,以便服务器能够识别用户。可以在Vue组件的方法中处理用户进入聊天室的逻辑。
5. 其他初始化操作: 在接收到用户ID后,还需要执行一些其他的初始化操作,例如获取用户的个人信息、加载聊天记录等。

项目展示

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/926bc3bfde514cb0978fc379343cda5c.png

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一个简易的聊天室就完成了。

项目的不足和展望

项目的简易实现存在一个问题,那就是刷新的时候会重新回到注册界面。这与socket.io的机制有关,因此设想添加session实现再次登录可识别用户的功能,但经过长时间的尝试和查阅资料,再加上自己的底子较差,无从下手,遂只能以该项目收尾。

收获

学完网络程序设计课程之后,我深感受益匪浅,对于网络应用的开发和设计有了更深入的了解。 通过学习课程,我对网络架构有了更全面的理解,包括客户端和服务器之间的通信机制、数据传输协议、以及常见的网络安全问题。这使我能够更好地设计和构建复杂的网络应用。
前后端分离的实践: 课程中的实践项目让我深入体验了前后端分离的开发模式。使用Vue.js作为前端框架和Socket.io处理实时通信,我学到了如何通过RESTful API设计和WebSocket建立双向通信,这在现代Web应用中变得越来越重要。通过实践项目,我对Vue.js的组件化开发、状态管理等概念有了更深刻的认识。这些知识不仅使我能够更高效地构建用户界面,还为我在前端领域的深入学习奠定了基础。课程中涉及了实时通信的相关技术,如WebSocket和Socket.io。这使我能够设计具有实时互动功能的应用,例如聊天室或协作工具,为用户提供更流畅的体验。网络程序设计是一个快速发展的领域,课程中所学只是冰山一角。通过这门课程,我培养了自主学习和解决问题的能力,学会了查阅文档、阅读源代码等重要的技能。

总的来说,网络程序设计课程让我更深入地了解了现代Web应用的开发,培养了我在前后端开发、实时通信、团队协作和安全性方面的技能。这将对我的未来职业发展产生积极的影响,使我更有信心地面对复杂的网络应用开发任务。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 WebSocket群聊,你可以按照以下步骤进行: 1. 创建一个 WebSocket 服务器:使用你选择的编程语言和框架,创建一个 WebSocket 服务器。这个服务器将处理客户端的连接和消息传递。 2. 客户端连接:客户端使用 WebSocket 协议连接到服务器。可以通过在浏览器中使用 JavaScript 的 WebSocket API 或使用其他编程语言和库来实现。 3. 服务器端处理连接:当客户端连接到服务器时,服务器应该将该连接保存下来,并分配一个唯一的标识符,以便稍后识别该客户端。 4. 群聊功能:服务器需要维护一个群聊的状态,用于保存所有参与群聊的连接信息。这可以是一个数据结构,如列表或哈希表。 5. 消息传递:当一个客户端发送一条消息到服务器时,服务器应该将该消息传递给所有参与群聊的客户端。这可以通过遍历保存的连接并逐个发送消息来实现。 6. 客户端接收消息:在客户端上,你需要实现接收服务器发送的消息的逻辑。这可以通过监听 WebSocket 的 `onmessage` 事件,并在事件处理程序中处理收到的消息。 7. 客户端发送消息:当用户在客户端上发送一条消息时,你需要将该消息发送给服务器。这可以通过使用 WebSocket 的 `send` 方法来实现。 通过以上步骤,你可以实现一个基本的 WebSocket 群聊功能。请注意,这只是一个简单的示例,你可能还需要考虑一些其他的安全性和性能方面的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值