socket.io 1.0中的to与in

socket 1.0中的to 与in

众所周知socket.io有全局广播事件和针对某个房间(room)来发送事件
比如

1
2
3
4
5
6
7
8
//新建个房间
io.of("/chat").on("connection",function(socket){
//针对chat发送hello事件
socket.broadcast.to('chat').emit('hello',data);
})
//连接到这个房间
socket.join("chat")

但是,我们一般都不会这么去做..如果有100个房间那么要处理100个room
所以一般都是一个总连接内直接分组不手动分组处理
比如

1
2
3
4
socket.on("connection",function(socket){
//加入hello房间 /分组到hello
socket.join("hello")
})

现在坑的一步来了 在socket.io 1.0版本中或者所在所有版本中强烈推荐这样写不容易掉坑

1
2
//给hello分组发送hello事件
socket.broadcast.to('hello').emit('hello',data);

很抱歉上面那一步根本行不通!请相信一位因这个bug而找了一小时的资料的苦逼程序猿
所以推荐用这种写法

1
io.sockets.to('hello').emit('hello',data);

获取所有的连接然后找到hello这个分组发送hello事件
to和in是一样的意思 把to换成in也是一样的