非常教程

Socket.IO参考手册

服务 | Server

Server

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()
  • path sets the value for Server#path()

传递给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

如果vtrue连接的服务器(请参阅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

附加Serverport与给定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 a connection. 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。用于访问诸如Cookieor的请求标头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,并可选择触发fnerr签名的回调(如果有的话)。

套接字自动成为使用其会话标识标识的room的成员(请参阅参考资料Socket#id)。

加入room的机制由Adapter已配置的会话处理(见Server#adapter上文),默认为socket.io-适配器。

Socket#leave(name:String, fn:Function):Socket

从中删除套接字room,并可选择触发fnerr签名的回调(如果有的话)。

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属于不同Namespaces的多路复用相关联。

Client#conn

对底层engine.io Socket连接的引用。

Client#request

一个getter代理,用于将引用返回给request发起engine.io连接的引用。用于访问诸如Cookieor的请求标头User-Agent

服务 | Server相关

Socket.IO

Socket.IO 是一个面向实时 web 应用的 JavaScript 库。它使得服务器和客户端之间实时双向的通信成为可能。

主页 http://socket.io/
源码 https://github.com/socketio/socket.io
发布版本 1.4.5

Socket.IO目录

1.客户 | Client
2.指南 | Guides
3.服务 | Server