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。
原文地址:https://www.cnblogs.com/goOtter/p/10115870.html