Socket.IO 配置、房间、事件
来源:互联网 发布:3d数据库 编辑:程序博客网 时间:2024/04/29 23:56
一、配置
Socket.IO提供了4个配置的API:io.configure, io.set, io.enable, io.disable。其中io.set对单项进行设置,io.enable和io.disable用于单项设置布尔型的配置。io.configure可以让你对不同的生产环境(如devlopment,test等等)配置不同的参数。
以下定义了development和release两种环境下Socket.IO的不同配置:
var io =require('socket.io').listen(80);io.set('heartbeat interval', 20);io.set('heartbeat timeout', 25);io.configure('production', function () { io.enable('browser client etag'); io.set('log level', 0); io.set('transports', ['websocket', 'jsonp-polling', 'xhr-polling', 'htmlfile']);});io.configure('development', function () { io.set('transports', ['websocket', 'jsonp-polling', 'xhr-polling', 'htmlfile']);});
常用配置:
transports(默认['websocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']):一个包含通信方法类型的数组。Socket.IO支持多种实现在线即时通信的方式,如websocket、polling等等,该配置能让你自行选择备用的通信方式。
log level(默认3):日志输出的最低级别,0为error,1为warn,2为info,3为debug,默认即输出所有类型的日志。
heartbeat interval(默认25秒):心跳包发送间隔,客户端需要在此时间段之内向服务器发送一个心跳包才能保持通信。
二、房间
房间是Socket.IO提供的一个非常好用的功能。房间相当于为指定的一些客户端提供了一个命名空间,所有在房间里的广播和通信都不会影响到房间以外的客户端。
socket.join('room name')可用于客户端进入房间,socket.leave('room name')用于离开房间。当客户端进入一个房间之后,可以通过以下两种方式在房间里广播消息:
//1. 向my room广播一个事件,提交者会被排除在外(即不会收到消息)io.sockets.on('connection',function(socket){//注意:和下面对比,这里是从客户端的角度来提交事件socket.broadcast.to('my room').emit('event_name', data);}//2. 向another room广播一个事件,在此房间所有客户端都会收到消息//注意:和上面对比,这里是从服务器的角度来提交事件io.sockets.in('another room').emit('event_name', data);//向所有客户端广播io.sockets.emit('event_name', data);
除了向房间广播消息之外,还可以通过以下API来获取房间的信息。
//获取所有房间的信息//key为房间名,value为房间名对应的socket ID数组
io.sockets.manager.rooms
//获取particular room中的客户端,返回所有在此房间的socket实例
io.sockets.clients('particular room')//通过socket.id来获取此socket进入的房间信息
三、事件
Socket.IO内置了一些默认事件,我们在设计事件的时候应该避开默认的事件名称,并灵活运用这些默认事件。
服务器端事件:
io.sockets.on('connection', function(socket) {}):socket连接成功之后触发,用于初始化
socket.on('message', function(message, callback) {}):客户端通过socket.send来传送消息时触发此事件,message为传输的消息,callback是收到消息后要执行的回调
socket.on('anything', function(data) {}):收到任何事件时触发
socket.on('disconnect', function() {}):socket失去连接时触发(包括关闭浏览器,主动断开,掉线等任何断开连接的情况)
客户端事件:
connect:连接成功
connecting:正在连接
disconnect:断开连接
connect_failed:连接失败
error:错误发生,并且无法被其他事件类型所处理
message:同服务器端message事件
anything:同服务器端anything事件
reconnect_failed:重连失败
reconnect:成功重连
reconnecting:正在重连
在这里要提下客户端socket发起连接时的顺序。当第一次连接时,事件触发顺序为:connecting->connect;当失去连接时,事件触发顺序为:disconnect->reconnecting(可能进行多次)->connecting->reconnect->connect。
- Socket.IO 配置、房间、事件
- socket.io房间订阅功能
- socket.io多房间聊天
- Socket.io对于房间的详细解析
- Socket.IO 内置事件
- socket.io内置事件
- Socket.IO 内置事件
- 使用express + socket.io实现多房间聊天应用
- 使用node.js + socket.io 构建多个房间聊天室
- 配置socket.io
- Windows socket之重叠IO:事件通知
- Windows socket之重叠IO:事件通知
- Windows socket之重叠IO:事件通知
- node.js+socket.io配置详解
- Nginx socket.io 反向代理配置
- Android使用socket.io的connect事件没有回调
- Socket.IO连接异常时的内置事件流程图
- 房间配置向导报错
- FZU2155 盟国 (并查集的虚拟节点)
- 工具——通过鼠标点击获取图像坐标
- 几乎自动的管理内存
- 【CSS】——display:inline与display:block
- 关于函数嵌套调用中的参数引用问题
- Socket.IO 配置、房间、事件
- Linux系列:grep命令使用
- Java程序员从笨鸟到菜鸟之(二)面向对象之封装,继承,多态(上)
- junit对程序进行测试
- [Lua]插件管理工具LuaRocks
- spring mvc 主配置文件名称说明
- 字符串移动
- android 中ids.xml资源的使用
- 黑马程序员-----JAVA 7K月薪面试题:交通灯管理系统