new Server(httpServer[, options]);

优质
小牛编辑
167浏览
2023-12-01
const Server = require('socket.io');
new Server(httpServer[, options])

参数说明:

  • httpServer (http.Server) 需要绑定的服务。
  • options (对象)
    • path (字符串):捕获webSocket连接的路径名,默认为(/http://socket.io)。
    • serverClient (布尔型):是否为本地文件提供服务,默认为(true)。
    • adapter (Adapter对象):使用哪一个适配器对象,默认的指向Adapter类的一个实例,详情跳转至socket.io-adapter
    • origins (字符串):规定被允许的域,默认为(*) 。
    • parser (Parser对象):指向一个parser对象,默认使用与http://socket.io相关联的socket.io-parser

使用new关键字和不使用new关键字均可实例化一个socket连接。

const io = require('socket.io')();
// or
const Server = require('socket.io');
const io = new Server();

对于http://engine.io,使用相同的配置项即可,详情查看engine.io的配置项参考

其他的配置项:

  • pingTimeout (数值型):客户端在没有收到服务器端的响应时,等待多少毫秒数,,默认是60000毫秒(即1分钟)。
  • pingInterval (数值型):服务器端在发送响应包前延迟多少毫秒,默认为25000毫秒(即25秒)。

这两个参数将会影响的是响应延迟,客户端在知道服务不可用之前仍然需要等待一段时间。举个例子,如果下行TCP连接没有关闭,大概是由于网络故障,但是客户端不得不等待pingTimeout+pingInterval这个长的毫秒数才能得知disconnect(未连接成功)这一事件。

  • transports (Array包含一系列字符串元素的数组):这一选项规定了允许哪些连接方式,默认的(['polling','websocket'])。

注意:这一点很重要,默认的,会使用长轮询的连接方式作为第一手方案,随后如果设备支持的话会升级到使用WebSocket,如果transports选项的值设置为**['websocket']**,则意味着直接使用WebSocket方式建立连接,并且如果这一连接方式不能使用,也不会自动切换到备用的链接方案(polling),因此目前建议使用默认的设置即可,除非你明白确信使用场景和你想要做什么。

const server = require('http').createServer();

const io = require('socket.io')(server, {
  path: '/test',
  serveClient: false,
  // below are engine.IO options
  pingInterval: 10000,
  pingTimeout: 5000,
  cookie: false
});

server.listen(3000);