一、概述
- 1、如何使用
- 使用 Node http 服务器搭建
- 使用 Express 3/4
- 使用 Express 2.X
- 发送和接收事件推送
- 创建你自己的路由
- 发送不确定能否准确送达到客户端的消息
- 正在发送和正在接受的数据(消息确认机制 acknowledgements)
- 广播消息给除当前客户端之外的所有在线客户端
二、服务器端 API
- Server
- new Server(httpServer[, options]);
- new Server(port[, options]);
- new Server(options);
- server.sockets
- server.serverClient([value]);
- server.path([value]);
- server.adapter([value]);
- server.origins([value]);
- server.origins(fn);
- server.attach(httpServer[, options]);
- server.listen(httpServer[, options]);
- server.bind(engine);
- server.onconnections(socket);
- server.of(nsp)
- server.close([callback]);
- Namespace
- Event: 'connect'
- Event: 'connection'
- Flag: 'Volatile'
- Flag: 'local'
- Socket
- socket.id
- socket.rooms
- socket.client
- socket.conn
- socket.handshake
- socket.use(fn)
- socket.send([…args][, ack])
- socket.emit(eventName[, …args][, ack])
- socket.on(eventName, callback)
- socket.once(eventName, listener)
- socket.removeListener(eventName, listener)
- socket.removeAllListener([eventName])
- socket.eventNames()
- socket.join(room[, callback])
- socket.leave(room[, callback])
- socket.to(room)
- socket.in(room)
- socket.compress(value)
- socket.disconnect(close)
- Flag: 'broadcast'
- Flag: 'volatile'
- Event: 'disconnect'
- Event: 'disconnecting'
- Client
- client.conn
- client.request
三、客户端API
- IO
- io.protocol
- io(url[, options])
- 初始化示例
- 使用多路复用
- 携带额外的请求头 extraHeaders
- Manager
- manager event
- Sokect
- socket event
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
使用多路复用
默认的,当连接道不同的命名空间后一个单一的链接将会被使用。
const socket = io();
const adminSocket = io('/admin');
// a single connection will be established
注意:重用相同的命名空间将会创建两个连接:
const socket = io();
const socket2 = io();
// will also create two distinct connections
自定义path
const socket = io('http://localhost', {
path: '/myownpath'
});
// server-side
const io = require('socket.io')({
path: '/myownpath'
});
这里,socket连接到admin命名空间,使用自定义的路径mypath。
请求地址看起来像这样:
localhost/mypath/?EIO=3&transport=polling&sid=<id>
命名空间将会作为数据的一部分被发送。
携带查询参数
const socket = io('http://localhost?token=abc');
// server-side
const io = require('socket.io')();
// middleware
io.use((socket, next) => {
let token = socket.handshake.query.token;
if (isValid(token)) {
return next();
}
return next(new Error('authentication error'));
});
// then
io.on('connection', (socket) => {
let token = socket.handshake.query.token;
// ...
});
携带查询选项
const socket = io({
query: {
token: 'cde'
}
});
查询内容可以在重新连接时更新:
socket.on('reconnect_attempt', () => {
socket.io.opts.query = {
token: 'fgh'
}
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论