Node.js Websocket给指定的人发送信息

如果要给指定的人发送信息,在websocket里面就要用到socketIdxos来作为一个识别每个连接用户的"id"

socketIdxos可以是字符串,也可以是数字,一般是在一个用户连接上触发connection事件上用到的,我这里选用8位数字来作为这个id的内容,为了防止重复出现,便搞了一下这个代码

function gid() {
    var id = Math.floor(Math.random() * (99999999 - 10000000 + 1)) + 10000000
    var have = false;
    for (var i = 0; i < player.length; i++) {
        if (player[i] == id.toString()) {
            have = true;
            break;
        }
    }
    if (have) {
        gid();
    } else {
        return id;
    }
}

这个代码里面有个player,是记录每个玩家id的数组,当发生重复时就回调这个函数(八位数一般重复概率很小,但也并不是没有),获取之后在代码上就添加

var id = gid()
player.push(id)

添加进去后即可

随后如果说要去匹配的话,先获取所有连接上的人的对象

wss.on("connection", (ws, req) => {
    wss.clients.forEach(s => {
    })
})

其中 s 就是这个对象,那么我们前面说到的socketIdxos就可以用到了,因为在每个获取的对象中它都能返回一个socketIdoxs(也就是s.socketIdoxs),你只需要那这个匹配就行,这样只需匹配到s.socketIdoxs相同的人即可,最后再s.send(你要发的信息)

完整代码(记得要把gid()这个方法给加进去!):

const SocketServer = require('ws').Server
const wss = new SocketServer({ server })  //搭建服务器
var player = new Array()
//当有人匹配到时
wss.on("connection", (ws, req) => {      
    // 把自己的给搞好先
    id = gid();
    player.push(id) 
    wss.clients.forEach(s => {
        if (s.socketIdxos == another && s.readyState == 1 && s.socketIdxos != id) {
            //another是你要找对面的id号
            //做你自己的事,此时s就是你要找的对象,发送信息用s.send()即可
        })
    })
})

若有什么疑问可以在下方评论区询问

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值