一、概述
- 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
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
携带额外的请求头 extraHeaders
仅当建立的是轮询连接时才起作用(默认为polling轮询),当使用websocket建立传输时,自定义的请求头将不会被添加,因为WebSockets握手信号不信任自定义的请求头(详细信息可以阅读 WebSocket protocol RFC)
const socket = io({
transportOptions: {
polling: {
extraHeaders: {
'x-clientid': 'abc'
}
}
}
});
// 服务器端
const io = require('socket.io')();
// 中间件
io.use((socket, next) => {
let clientId = socket.handshake.headers['x-clientid'];
if (isValid(clientId)) {
return next();
}
return next(new Error('authentication error'));
});
仅当通过websocket传输时
默认的,长轮询连接会被首次创建,随后升级到更好的传输方式(比如WebSocket)。
如果你喜欢挑战性,这一部分可以被跳过。
const socket = io({
transports: ['websocket']
});
// on reconnection, reset the transports option, as the Websocket
// connection may have failed (caused by proxy, firewall, browser, ...)
socket.on('reconnect_attempt', () => {
socket.io.opts.transports = ['polling', 'websocket'];
});
携带自定义的解析器
默认的解析器(详细内容查阅这里Socket.IO custom parsers)
const parser = require('socket.io-msgpack-parser'); // or require('socket.io-json-parser')
const socket = io({
parser: parser
});
// the server-side must have the same parser, to be able to communicate
const io = require('socket.io')({
parser: parser
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论