socket.io明晰

  • io.emitio.sockets.emit是一样的,向所有连接的客户端都发送
io.emit('an event sent to all connected clients');
io.sockets.emit('an event sent to all connected clients');
建议使用io.emit
  • 连接内部的socket代表的是每一个连接本身因此:
    • socket.broadcast.emit 会像当前连接之外的连接的服务器端发送消息
    • socket.on socket.emit 不用多说

将数据关联并存储到当前连接的 socket
在一个会话周期中,我们大部分情况下都需要存储当前会话者的一些数据,来识别或者特定情形下获取这些数据。
示例代码

var io = require(‘socket.io‘).listen(80);
 
io.sockets.on(‘connection‘, function (socket) {
  socket.on(‘set nickname‘, function (name) {
    socket.set(‘nickname‘, name, function () {
      socket.emit(‘ready‘);
    });
  });
 
  socket.on(‘msg‘, function () {
    socket.get(‘nickname‘, function (err, name) {
      console.log(‘Chat message by ‘, name);
    });
  });
}); 非常建议使用这种方式来设置用户会话的数据。

在服务端收到connection的事件的时候,socket会携带一个建立连接时浏览器端传过来的握手信息socket.handshake
这些浏览器端的信息得到之后,就很容易进行权限的验证了。socket.io同时提供了
io.set('authorization', callback);

方法来对每个连接进行权限限制。
http://deadhorse.me/nodejs/2011/12/29/socket.io_induction.html

你可能感兴趣的:(socket.io明晰)