当前位置: 首页 > 知识库问答 >
问题:

使用套接字进行私人聊天。socket.io上的id

于嘉许
2023-03-14

我在诺德吉斯和 socket.io 更新鲜。我正在尝试使用节点js,socket.io 和快速框架中的角js制作一个聊天应用程序。我缺乏如何私下执行聊天的基本想法,到目前为止,我的代码在一组连接的用户中聊天。这是我的服务器代码

var server = require('http').Server(app);
var io = require('socket.io')(server);
var socket = require('./routes/socket.js');
server.listen(8000);
console.log('server listening on port:8000');
io.on('connection',socket);

我的主套接字文件包含如下代码:

module.exports = function(socket){   
console.log('connected'+' '+'socketId :'+socket.id);     
//console.log(req.session.id);
var users =[];
socket.emit(socket.id);

socket.on('username',function(data){
    users.push({id:socket.id,message:data.username});        
    socket.emit('username', users)

})      
  socket.on('typing',function(data){
    //socket.emit('typing',{message:"helo angular"});
    socket.broadcast.emit('typing',{message:data.message});
});
  socket.on('typing-stop',function(data){
    //socket.emit('typing',{message:"helo angular"});
    debugger;
    socket.broadcast.emit('typing-stop',{message:data.message});
});
socket.on('new-user',function(data){
    socket.emit('new-user',data);
    socket.broadcast.emit('new-user',data);
})   

socket.on('message',function(data){
    users.push({message:data.message});        
    socket.emit('message',{id:socket.id,message:data.message});
    socket.broadcast.emit('message',{id:socket.id,message:data.message});// emit the message to every one connected in server
})

socket.on('disconnect',function(){
        console.log('user disconnected');          
      socket.broadcast.emit('disconnected',{'message':'user left the chat room'});
    });
 }

我是abe加载所有登录我的应用程序的用户。我想要的就是点击可用并开始私信,到现在聊天是公开的,服务器中连接的每个人都可以看到消息。我的angularjs控制器代码如下:

    function orgController(notifyService, chatSocket, $state,$http) {
    chatSocket.connect();

    var vm = this;
    vm.sendMessage = sendMessage;
    vm.messages = [];
    vm.users = [];      

    var id = $state.params.id;
    $http.get('/users/' + id).then(function(result) {
    console.log(result.data);
    vm.userData = result.data;
    chatSocket.emit('new-user', { 'username': result.data.details.firstName             + ' ' + result.data.details.lastName });
     });
      chatSocket.on('new-user',function(data){
    vm.users.push(data);
    })
    function sendMessage(msg) {
    //console.log(msg);
    if (msg != null && msg != '') {
        chatSocket.emit('message', { message: msg });
        vm.msg = '';
    } else {
        vm.msg = '';
    }
    }
    chatSocket.on('message', function(data) {
    //debugger;
    console.log(data);
    vm.messages.push(data);
    });
}

注:我包括角套筒。io模块,并将其依赖项注入一个名为chatSocket的服务中,该服务只返回socketFactory。

现在我想从登录的用户列表中单击一个用户并开始通信。我怎么能从(socket.id)。哪个套接字生成或从会话ID?任何人都有更好的方法来做这件事。任何建议和回应都非常感谢。

共有1个答案

拓拔弘亮
2023-03-14

基本上,您需要做的是将事件发送到特定的套接字,如下所示。

io.to(socket.id).emit('privateMessage', {message: <message goes here>});

然后在客户端

socket.on('privateMessage', function(data){
  var message = data.message;
  //do stuff, display message etc...
});
 类似资料:
  • 问题内容: 我的聊天应用程序遇到问题,我需要能够向特定用户发送私人消息,我可以选择该特定用户,但由于某些原因无法弄清楚如何发送私人消息。 在下面,您将找到我服务器的代码,请提供帮助: 问题答案: 首先在聊天室中添加用户,以便在您的私人聊天室中轻松找到用户 您用于加入私人会议室的客户端代码 Join Room 您在客户端的JavaScript代码 } 您的服务器端代码以在您的房间中添加用户 });

  • 我正在使用MERN stack和socket开发一个私人聊天应用程序。伊奥。 我能够成功地向特定用户发送私人消息,但无法包含要向两个用户显示的消息发送者。 客户端 服务器 我需要帮助来包含发件人以及要显示给两个用户的消息。我还想正确附加消息,因为上面的代码覆盖了之前的消息。

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

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

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

  • 我正在用JMS制作一个简单的聊天应用程序,但我的代码不起作用,我不知道为什么。这是我的代码,我与JBoss一起使用,所以我打开pub并编写了这段代码,当我单击启动Eclipse时,给我以下错误消息: