您的位置:首页 > 其它

socketio简单笔记-2

2017-02-26 00:00 169 查看

房间(频道)

// 加入房间
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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: