Fork me on GitHub

Socket.IO 02创建服务

Socket.IO 02创建服务

1 创建服务

1.1 new Server(httpServer[, options])

  • httpServer 绑定一个http.Server 服务
  • options 相关参数
    • path 捕获的路径的名称
    • serveClient 是否提供客户端js文件
    • adapter 适配器
    • origins 允许的源域名
    • parse 解析器
    • pingTimeout 多少毫米下没有响应则关闭连接
    • pingTnterval 发送ping包的间隔时间,单位为毫秒
    • cookie 是否需要 cookie

单独修改某个参数

  • server.path(value)
  • server.serveClient(value)
  • server.adapter(value)
  • server.origins(value)
  • server.origins(fn) fn为一个函数,该函数会被传递两个参数(origin: String, callback(error, success)),有一定的缺点
io.origins((origin, callback) => {
  if (origin !== 'https://foo.example.com') {
    return callback('origin not allowed', false);
  }
  callback(null, true);
})

案例:

const io = require('scoket.io')()
// 或者
const Server = require('socket.io')
const io = new Server()

1.2 new Server(port[, options])

  • port 端口
  • options 和1.1的options一致

1.3 new Server(options)

端口以及服务暂时不进行配置,利用attach进行后续追加

// 创建 io
const io = require('socket.io')({
	path: '/test'
})
// 追加服务
const server = require('http').createServer()
io.attach(server, {
  pingTimeout:4000
})
server.listen(3000)
// 或者
io.attach(3000, {
  cookie: false
})

1.4 追加或修改服务配置信息

  • server.attach(httpServer[, options])
  • server.attach(port[, options])

1.5 监听服务

  • server.listen(httpServer[, options])server.attach(httpServer[, options])
  • server.listen(port[, options])server.attach(port[, options])

2 其他相关API

2.1 server.sockets

配置命名空间 默认命名空间为:\

2.2 server.engine.generateId

覆盖默认生成 socket id 方法

例子

io.engine.generateId = req => {
  return 'custom:id' + custom_id++ // custom id 必须是唯一的
}

2.3 server.bind(engine)

高级使用,将服务器绑定到特定的engine.io

2.4 server.onconnection(socket)

2.5 server.of(nsp)

2.6 server.close([callback])

关闭socket.io服务,回调函数 callback 可传可不传。