码迷,mamicode.com
首页 > Windows程序 > 详细

Socket.IO API Socket

时间:2018-12-13 20:25:34      阅读:488      评论:0      收藏:0      [点我收藏+]

标签:user   vat   code   函数   ror   send   标识   tor   配置   

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。

Socket.IO API Socket

标签:user   vat   code   函数   ror   send   标识   tor   配置   

原文地址:https://www.cnblogs.com/goOtter/p/10115870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!