• Socket.IO API Socket


    Socket

    Socket类继承自EventEmitter。覆写了emit方法,保留了EventEmitter的其他方法

    socket.id

    会话的唯一标识符,来自于底层的Client

    socket.rooms

    标识此客户端所在房间的字符串哈希值,按房间名称编制索引

    socket.client

    对底层Client对象的引用。

    socket.conn

    对底层Client传输连接的引用(engine.io Socket对象)

    socket.request

    一个getter代理,它返回对request发起底层engine.io的引用Client。用于访问请求标头,如Cookie或User-Agent。

    socket.handshake

    请求细节

    {
      headers: /* 作为握手一部分的请求头信息*/,
      time: /* 创建时间(as string) */,
      address: /* 客户端ip */,
      xdomain: /* 是否跨域 */,
      secure: /* 是否为https */,
      issued: /* 创建时间 (as unix timestamp) */,
      url: /* 请求地址*/,
      query: /* 查询对象 */
    }
    

    socket.use(FN)

    注册中间件

    socket.send([... args] [,ack])

    发送一个message事件

    socket.emit(eventName [,... args] [,ack])

    触发一个事件,可以包括任意的参数,支持所有可序列化的参数

    ack参数时可选的,将使用客户端的响应值进行调用

    io.on('connection', (socket) => {
      socket.emit('an event', { some: 'data' });
    
      socket.emit('ferret', 'tobi', (data) => {
        console.log(data); // data will be 'woot'
      });
    
      // the client code
      // client.on('ferret', (name, fn) => {
      //   fn('woot');
      // });
    
    });
    

    socket.on(eventName, callback)

    为给定的事件注册一个回调函数

    socket.once(eventName, listener) socket.removeListener(eventName, listener) socket.removeAllListeners([eventName]) socket.eventNames()

    继承自EventEmitter

    socket.join(room[, callback])

    将客户端添加到room,并可选择触发带err签名的回调(如果有)

    连接房间的机制由Server Adapter已配置的

    为方便起见,每个套接字自动加入由其id标识的房间,这样可以轻松的广播消息到其他套接字

    io.on('connection', (socket) => {
      socket.on('say to someone', (id, msg) => {
        // send a private message to the socket with the given id
        socket.to(id).emit('my message', msg);
      });
    });
    

    socket.join(rooms [,callback])

    将客户端添加到room列表中,并可选择触发带err签名的回调(如果有)

    socket.leave(room [,callback])

    从room中删除客户端

    socket.leave(room [,callback])

    向一个或一系列房间中广播消息

    socket.to(room) socket.in

    io.on('connection', (socket) => {
    
      // to one room
      socket.to('others').emit('an event', { some: 'data' });
    
      // to multiple rooms
      socket.to('room1').to('room2').emit('hello');
    
      // a private message to another socket
      socket.to(/* another socket id */).emit('hey');
    
      // WARNING: `socket.to(socket.id).emit()` will NOT work, as it will send to everyone in the room
      // named `socket.id` but the sender. Please use the classic `socket.emit()` instead.
    });
    

    socket.compress(value)

    value值为真时,压缩事件数据。默认为true

    socket.disconnect(close)

    断开此客户端。如果close值为ture,则关闭底层连接。否则,只断开命名空间

    Flag: ‘broadcast’

    将事件广播到除发送者之外的所有socket

    io.on('connection',(socket)=> { 
      socket.broadcast.emit('an event',{ some:'data' }); //每个人都得到它但发送者
     });
    

    Flag: ‘volatile’ Flag: ‘binary’

    类似命名空间API中的定义

    Event: ‘disconnect’

    断开连接时触发

    io.on('connection', (socket) => {
      socket.on('disconnect', (reason) => {
        // ...
      });
    });
    

    可能原因

    Event: ‘error’

    发生错误时触发

    io.on('connection', (socket) => {
      socket.on('error', (error) => {
        // ...
      });
    });
    

    Event: ‘disconnecting’

    在客户端将要断开连接时触发(但尚未离开rooms)

    io.on('connection', (socket) => {
      socket.on('disconnecting', (reason) => {
        let rooms = Object.keys(socket.rooms);
        // ...
      });
    });
    

    Client

    client.conn

    对底层engine.io Socket连接的引用。

    client.request

    一个getter代理,它返回request对origin.io连接的引用。用于访问请求标头,如Cookie或User-Agent。

  • 相关阅读:
    PHP基本的语法以及和Java的差别
    Linux 性能測试工具
    【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)
    【Oracle 集群】Oracle 11G RAC教程之集群安装(七)
    【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 特殊问题和实战经验(五)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之缓存融合技术和主要后台进程(四)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
    Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
    【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)
  • 原文地址:https://www.cnblogs.com/goOtter/p/10115870.html
Copyright © 2020-2023  润新知