Server
Server API
Server
使用 require('socket.io')
.
Server()
创建一个新的Server
。使用和不使用new
:
var io = require('socket.io')(
// or
var Server = require('socket.io'
var io = new Server(
Server(opts:Object)
或者,Server
构造函数的第一个或第二个参数(见下文)可以是一个选项对象。
支持以下选项:
serveClient
sets the value for Server#serveClient
()
传递给socket.io的选项总是传递给engine.io
Server
被创建的选项。请参阅engine.io
选项。
Server(srv:http#Server, opts:Object)
创建一个新的Server
并附加到给定的srv
。可选opts
可以传递。
Server(port:Number, opts:Object)
将socket.io绑定到一个新的http.Server
侦听port
。
Server#serveClient(v:Boolean):Server
如果v
是true
连接的服务器(请参阅Server#attach
)将担任客户端文件。默认为true
。
attach
调用此方法后无效。
// pass a server and the `serveClient` option
var io = require('socket.io')(http, { serveClient: false }
// or pass no server and then you can call the method
var io = require('socket.io')(
io.serveClient(false
io.attach(http
如果未提供参数,则此方法返回当前值。
Server#path(v:String):Server
设置将v
在其下提供engine.io
静态文件的路径。默认为/socket.io
。
如果未提供参数,则此方法返回当前值。
Server#adapter(v:Adapter):Server
设置适配器v
。默认为Adapter
基于内存的socket.io 提供的实例。请参阅socket.io-适配器。
如果未提供参数,则此方法返回当前值。
Server#origins(v:String):Server
设置允许的v
来源。默认允许任何来源。
如果未提供参数,则此方法返回当前值。
Server#sockets:Namespace
default(/
)命名空间。
Server#attach(srv:http#Server, opts:Object):Server
使用提供的(可选)附加Server
到engine.io实例。srvopts
Server#attach(port:Number, opts:Object):Server
附加Server
到port
与给定opts
(可选)绑定的engine.io实例。
Server#listen
同义词Server#attach
。
Server#bind(srv:engine#Server):Server
仅限高级使用。将服务器绑定到特定的engine.io Server
(或兼容的API)实例。
Server#onconnection(socket:engine#Socket):Server
仅限高级使用。socket.io
从传入的engine.io(或兼容的API)创建一个新的客户端socket
。
Server#of(nsp:String):Namespace
Namespace
通过其路径名标识符初始化并检索给定nsp
。
如果命名空间已经初始化,它会马上返回。
Server#emit
向所有连接的客户端发出事件。以下两个是等效的:
var io = require('socket.io')(
io.sockets.emit('an event sent to all connected clients'
io.emit('an event sent to all connected clients'
有关其他可用方法,请参见Namespace
下文。
Server#use
See Namespace#use
below.
命名空间
表示在由路径名标识的给定范围下连接的套接字池(例如:)/chat
。
默认情况下,客户端始终连接到/
。
事件
connection
/connect
. Fired upon aconnection
. Parameters:
- `Socket` the incoming socket.
Namespace#name:String
名称空间标识符属性。
Namespace#connected:Object
Socket
连接到此索引的命名空间的哈希对象id
。
Namespace#use(fn:Function):Namespace
注册一个中间件,该中间件是一个函数,可以为每个入口执行Socket
并作为参数接收套接字,还可以选择将执行延迟到下一个注册的中间件。
var io = require('socket.io')(
io.use(function(socket, next){
if (socket.request.headers.cookie) return next(
next(new Error('Authentication error')
}
传递给中间件回调的错误将作为特殊error
数据包发送给客户端。
Socket
Socket
是与浏览器客户端进行交互的基础类。A Socket
属于某个Namespace
(默认/
)并使用底层Client
进行通信。
Socket#rooms:Array
识别此socket所在room的字符串列表。
Socket#client:Client
对基础Client
对象的引用。
Socket#conn:Socket
对解除Client
传输连接(engine.io Socket
对象)的引用。
Socket#request:Request
一个getter代理,用于将引用返回给request
源自底层engine.io的引用Client
。用于访问诸如Cookie
or的请求标头User-Agent
。
Socket#id:String
套接字会话的唯一标识符,来自底层Client
。
Socket#emit(name:String, …):Socket
向由该字符串标识的套接字发出事件name
。任何其他参数都可以包含在内。
所有数据结构都受支持,其中包括Buffer
。JavaScript函数不能被序列化/反序列化。
var io = require('socket.io')(
io.on('connection', function(socket){
socket.emit('an event', { some: 'data' }
}
Socket#join(name:String, fn:Function):Socket
将套接字添加到room
,并可选择触发fn
带err
签名的回调(如果有的话)。
套接字自动成为使用其会话标识标识的room的成员(请参阅参考资料Socket#id
)。
加入room的机制由Adapter
已配置的会话处理(见Server#adapter
上文),默认为socket.io-适配器。
Socket#leave(name:String, fn:Function):Socket
从中删除套接字room
,并可选择触发fn
带err
签名的回调(如果有的话)。
room断开后会自动离开
。
离开room的机制由Adapter
已经配置的(见Server#adapter
上面)处理,默认为socket.io-适配器。
Socket#to(room:String):Socket
Socket#in(room:String):Socket
为后续事件发射设置一个修饰符,该事件将只被广播
到已加入给定的套接字room
。
要激活到多个room,您可以to
多次调用。
var io = require('socket.io')(
io.on('connection', function(socket){
socket.to('others').emit('an event', { some: 'data' }
}
Client
所述Client
类表示输入的传输(engine.io)连接。A Client
可以与许多Socket
属于不同Namespace
s的多路复用相关联。
Client#conn
对底层engine.io
Socket
连接的引用。
Client#request
一个getter代理,用于将引用返回给request
发起engine.io连接的引用。用于访问诸如Cookie
or的请求标头User-Agent
。