首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在节点js中创建私有聊天,并且无法将消息发送到特定的套接字id。

在节点js中创建私有聊天,并且无法将消息发送到特定的套接字id。
EN

Stack Overflow用户
提问于 2018-08-17 07:10:07
回答 1查看 0关注 0票数 0

下面是我的服务器端和客户端文件:

服务器端文件:

代码语言:txt
复制
'use strict';
var model = require('../model/model.js');

class Socket{
    constructor(socket){
        this.io = socket;
        this.users = [];
    }

    socketEvents(){ 
        this.io.on('connection', (socket) => {
            socket.on('username', (data) => {

                this.users.push({
                    id : socket.id,
                    userName : data.username
                });

                model.login(data);

                let len = this.users.length;
                len--;

                model.addSocketId( data.username,this.users[len].id);

                this.io.emit('userList',this.users,this.users[len].id); 
            });

            socket.on('getMsg', (data) => {
                model.insertMessages({
                        fromUserId: data.fromUserId,
                        toUserId: data.toUserId,
                        message: data.msg
                });
                console.log("socket id is:");
                console.log(data.toid);
                socket.broadcast.to(data.toid).emit('sendMsg',{
                    msg:data.msg,
                    name:data.name
                });

            });

            socket.on('disconnect',()=>{
                for(let i=0; i < this.users.length; i++){
                    if(this.users[i].id === socket.id){
                        this.users.splice(i,1); 
                    }
                }
                this.io.emit('exit',this.users); 
            });
        });
    }

    socketConfig(){
        this.socketEvents();
    }
}
module.exports = Socket;


Below is my Client Side File:

<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
    var socket = io.connect("http://192.168.1.12:3000");

    socket.on('sendMsg', (data) => {
        console.log("send message-list");
        $('#message-list').append("<li class='friend-user'>"+data.msg+"</li>");
    });

    socket.on('userList', (completeUserList,userSocketId) => {
       console.log('userlist function');
       var userList = completeUserList;
    });
</script>
EN

回答 1

Stack Overflow用户

发布于 2018-08-17 17:01:48

应该工作。

代码语言:javascript
复制
socket.broadcast.to(data.toUserId).emit('sendMsg',{
    msg:data.msg,
    name:data.name
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档