socket.io入门

日期:2015-5-16 21:48 | 标签: | 阅读:469

socket.io是一个实时通信通讯库。websocket也是Socket.io实现的一个子集。

核心:emit && on

  1. 使用方式1
    socket.emit('action');
    socket.on('action',function(){...});
    
  2. 使用方式2
    socket.emit('action',data);
    socket.on('action',function(data){...});
    
  3. 使用方式3
    socket.emit(action,arg1,arg2); 
    socket.on('action',function(arg1,arg2){...});
    
  4. 使用方式4
    socket.emit('action',data, function(arg1,arg2){...} )
    socket.on('action',function(data,fn){   fn('a','b') ;  });
    
    注意:一次发送不应该写多个回调,否则只有最后一个起效,回调应作为最后一个参数。

事件(内置)

  1. 服务器端事件

    1. connection:初始化连接
    2. message:发送消息
    3. anything:收到任何事件
    4. disconnect:socket失去连接(包括关闭浏览器,主动断开,掉线等)
    
  2. 客户端事件:

    1. connect:连接成功
    2. connecting:正在连接
    3. disconnect:断开连接
    4. connect_failed:连接失败
    5. error:错误发生,并且无法被其他事件类型所处理
    6. message:同服务器端message事件
    7. anything:同服务器端anything事件
    8. reconnect_failed:重连失败
    9. reconnect:成功重连
    10. reconnecting:正在重连
    

分组

其实还可以叫做命名空间或者房间(适合聊天室),分组方式如下所示:

socket.join('组名');
socket.leave('组名');

消息推送

// ==单独发==
// 1. 给每个注册不同的事件,可以这样:
socket.emit(to+"userid",data);
// 2. 每个socket的默认分组是自身,可以这样:
io.sockets.in(socketid).emit('refresh',data); 
// 广播
io.sockets.emit('事件',message);
io.sockets.in('组名').emit('事件',data);
// 广播:本人收不到消息
socket.broadcast.emit('事件',message);
socket.broadcast.to('组名').emit('事件',data);

命名空间

io.of(namespace)

客户端连接时只需要使用:url+namespace即可

参考

http://m.jb51.net/article/57091.htm

版权声明: 署名-非商业性使用-禁止演绎 4.0 国际(CC BY-NC-ND 4.0
Copyright ©2013-2017 | 粤ICP备14081691号 | yipeng手工打造 | 联系方式