当前位置: 首页 > 面试题库 >

与socket.io私人聊天

濮阳景天
2023-03-14
问题内容

我的聊天应用程序遇到问题,我需要能够向特定用户发送私人消息,我可以选择该特定用户,但由于某些原因无法弄清楚如何发送私人消息。

在下面,您将找到我服务器的代码,请提供帮助:

var express = require('express');

var app = express();

var PORT = process.env.PORT || 8000;

var http = require('http').Server(app); // this is a node server that uses express as the boiler plate

var io = require('socket.io')(http); // socket! pass our server as a parameter to it





// use express static to expose a folder

app.use(express.static(__dirname + '/public'));



var users = [],

    connections = [];

var onlineClients = {};









// Register events on socket connection

io.on('connection', function(socket){

    connections.push(socket);

    // console.log("connected socket", connections);



    socket.on("disconnect", function() {

        users.splice(users.indexOf(socket.username), 1);

        updateUsernames();

        connections.splice(connections.indexOf(socket), 1);

        console.log("disconnected socket", connections.length)

    });



    socket.on("send message", function(data) {

        // console.log(data);

        io.emit("new message", {msg: data, user: socket.username});

    });





    socket.on("notify user", function(data) {

        io.emit("notify user", {user: socket.username})

    });





    socket.on("new user", function(data) {

        socket.username = data;

        users.push(socket.username);

        updateUsernames();



    });



    function updateUsernames() {

        io.emit("get users", users);

    };



    socket.on("private", function(data, recipientName) {

        var recipient = connections.filter(function (recipient) {

            return recipient.username === recipientName;

        })[0];

            console.log(recipient.id);

            console.log(data);

        io.sockets.socket(recipient.id).emit("received private msg", data);



    });





    // socket.on("create room", function(room) {

    //  socket.join(room);

    //  io.sockets.in(room).emit('event', "hey wusup am in this room");

    //  console.log(socket);



    // })



});



http.listen(PORT, function(){

  console.log('Server started on port ' + PORT);

});

问题答案:
  • 首先在聊天室中添加用户,以便在您的私人聊天室中轻松找到用户
  • 您用于加入私人会议室的客户端代码

    <input type="text" class="form-control" id="user_email" placeholder="user_email"  />
    

  • 您在客户端的JavaScript代码

    function a(){
    io.emit('privatechatroom', {email:document.getElementById('user_email').value});
    

    }

  • 您的服务器端代码以在您的房间中添加用户

    socket.on('privatechatroom',function(data){
    socket.join(data.email);
    io.emit('res',{mes:"you are added"})
    

    });

现在您可以向最近添加到此会议室客户端的那个人发送私人消息

function b() {
    io.emit('sendmail', { email: document.getElementById('sender_mail').value, message: document.getElementById('message').value });
    $('#message').val('');
}



/*serverside code*/
socket.on('sendmail', function (data) {
    io.sockets.in(data.email).emit('new_msg', { msg: data.message });
    console.log(data.email);
});


 类似资料:
  • 问题内容: 我一直在寻找运气不佳的网络。我试图弄清楚如何从一个用户向另一个用户发送私人消息。有很多片段,但是我不确定客户端/服务器之间的交互。如果我有要发送到的套接字的ID,该如何将其发送到服务器,以及如何确保服务器仅将消息发送到该接收者的套接字? 有没有人知道的教程或演练? 问题答案: 无需教程。关于Socket.IO的常见问题很简单: 编辑: 人们在询问以后如何获取该对象时会链接到此问题。没有

  • 我在诺德吉斯和 socket.io 更新鲜。我正在尝试使用节点js,socket.io 和快速框架中的角js制作一个聊天应用程序。我缺乏如何私下执行聊天的基本想法,到目前为止,我的代码在一组连接的用户中聊天。这是我的服务器代码 我的主套接字文件包含如下代码: 我是abe加载所有登录我的应用程序的用户。我想要的就是点击可用并开始私信,到现在聊天是公开的,服务器中连接的每个人都可以看到消息。我的ang

  • 问题内容: 我如何在私人聊天中使用node.js和socket.io向共享了session_id的所有用户发送消息? 问题答案: 您必须与创建一个房间并让用户订阅该房间,以便您可以向该房间发送私人消息, 客户 服务器 以下是创建会议室,订阅会议室并将消息发送到会议室的文档和示例: Socket.io房间

  • 问题内容: 我现在有这段代码设置了缺口和余地: 我想知道我如何才能有多少人连接到特定的聊天室…例如Room.length 客户端 : 我发现了这一点,但给出了未定义的内容: 问题答案: 对于socket.io版本> = 1.0: 请注意,房间成为具有.length1.4属性的实际类型,因此1.4.x方法从现在开始应该是稳定的。当然,禁止对该类型的API进行重大更改。 计算所有连接到的客户端’my_

  • 问题内容: 我现在有这段代码设置了缺口和余地: 我想知道我如何才能有多少人连接到特定的聊天室…例如Room.length 客户端 : 我发现了这一点,但给出了未定义的内容: 问题答案: 如果您使用的版本<1,

  • 本文向大家介绍基于Nodejs利用socket.io实现多人聊天室,包括了基于Nodejs利用socket.io实现多人聊天室的使用技巧和注意事项,需要的朋友参考一下 socket.io简介 在Html5中存在着这样的一个新特性,引入了websocket,关于websocket的内部实现原理可以看这篇文章,这篇文章讲述了websocket无到有,根据协议,分析数据帧的头,进行构建websocket