socketio简单笔记-2

房间(频道)

// 加入房间
socket.join('some room');
// 离开房间
socket.leave('some room');


// 获取所有房间的信息
// key为房间名,value为房间名对应的socket ID数组
io.sockets.manager.rooms

// 获取particular room中的客户端,返回所有在此房间的socket实例
io.sockets.clients('particular room')

// 通过sid获取所有进入的房间
io.sockets.manager.roomClients[socket.id]

发送易变(volatile)的数据

volatile意思大概是说,当服务器发送数据时,客户端因为各种原因不能正常接收,比如网络问题、或者正处于长连接的建立连接阶段。此时会让我们的应用变得 suffer,那就需要考虑发送 volatile 数据。

socket.volatile.emit('bieber tweet', tweet);

即使客户端没连线,一样可以这样发送,服务器会自动丢弃发送失败的数据。

获取cookies和header的方式

socket.request

socket.request指向http的request,所以可以获取cookies和header

中间件

var io = require('socket.io')();
io.on('connection', function(socket){
  socket.use(function(packet, next){
    if (packet.doge === true) return next();
    next(new Error('Not a doge error'));
  });
});

socket.use可以注册一个中间件,那么任何发送来的包都会被中间件预先处理
如果next带上错误信息,那么就会直接返给clinet
否则可以进入下一步的处理

客户端建立一个socket连接

var socket = io("ws://103.31.201.154:5555");

客户端socket.on()监听的事件:

connect:连接成功
connecting:正在连接
disconnect:断开连接
connect_failed:连接失败
error:错误发生,并且无法被其他事件类型所处理
message:同服务器端message事件
anything:同服务器端anything事件
reconnect_failed:重连失败
reconnect:成功重连
reconnecting:正在重连
当 第一次连接时,事件触发顺序为:connecting->connect;当失去连接时,事件触发顺序 为:disconnect->reconnecting(可能进行多 次)->connecting->reconnect->connect。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值