socketio简单笔记-2

来源:互联网 发布:网络电话卡怎么使用 编辑:程序博客网 时间:2024/06/04 18:04

房间(频道)

// 加入房间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。

0 0
原创粉丝点击