socket.io

socket建立连接

var socket = io.connect();//与服务器进行连接

socket.emit('event', data);//向服务器发送一个名为event的事件和数据data

socket.on('event', function () {...});//监听服务器返回的事件,对返回的数据进行处理

命名空间

命名空间着实是一个非常实用好用的功能。我们可以通过命名空间,划分出不同的房间,在房间里的广播和通信都不会影响到房间以外的客户端。
在服务端,通过of("")的方式来划分新的命名空间:

io.of('chat').on('connection',function(socket){...});

示例中,我们创建一个名为chat的房间,客户端可以通过如下方式连接到指定的房间:

var socket = io.connect('/chat');

虽然连接到指定的房间,但是我们也可以在服务端操作,自由的进出房间:

socket.join('chat');//进入chat房间
socket.leave('chat');//离开chat房间

广播消息

‘全局广播’,所有连接到服务器的客户端都会受到广播的信息:

socket.broadcast.emit('DATA',data);//除自己以外的所有人

有的广播信息只发送给一部分客户端,比如某个房间里面的用户,那么可以使用如下方式:

socket.broadcast.to('chat').emit('DATA',data);//不包括自己

io.sockets.in('chat').emit('event_name', data);//包括自己

当使用to()的方式广播信息时,只有该命名空间下的客户端才会收到广播信息

传递参数
var socket = io.connect('/',{_query:'sid=123456'});

在服务端可以这样获取到传递的参数:

io.use(function(socket){
    var  query = socket.request._query;
    var  sid = query.sid;
});

客户端传递的参数已经被解析成了一个json对象,这个对象就是_query。

服务器端

io.on('connection',function(socket));  //监听客户端连接,回调函数会传递本次连接的socket

io.sockets.emit('String',data);  //给所有客户端广播消息

io.sockets.socket(socketid).emit('String', data);  //给指定的客户端发送消息

socket.on('String',function(data));  //监听客户端发送的信息

socket.emit('String', data);  //给该socket的客户端发送消息

io.sockets.clients().forEach(function (socket) {
    //.....
}); //获取客户端socket

io.sockets.manager.rooms   //获取所有房间(分组)信息

io.sockets.manager.roomClients[socket.id]    //来获取此socketid进入的房间信息

io.sockets.clients('particular room')     //获取particular room中的客户端,返回所有在此房间的socket实例
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值