# Engine.IO: the realtime engine
[![Build Status](https://travis-ci.org/socketio/engine.io.svg?branch=master)](http://travis-ci.org/socketio/engine.io)
[![NPM version](https://badge.fury.io/js/engine.io.svg)](http://badge.fury.io/js/engine.io)
`Engine.IO` is the implementation of transport-based
cross-browser/cross-device bi-directional communication layer for
[Socket.IO](http://github.com/socketio/socket.io).
## How to use
### Server
#### (A) Listening on a port
```js
var engine = require('engine.io');
var server = engine.listen(80);
server.on('connection', function(socket){
socket.send('utf 8 string');
socket.send(new Buffer([0, 1, 2, 3, 4, 5])); // binary data
});
```
#### (B) Intercepting requests for a http.Server
```js
var engine = require('engine.io');
var http = require('http').createServer().listen(3000);
var server = engine.attach(http);
server.on('connection', function (socket) {
socket.on('message', function(data){ });
socket.on('close', function(){ });
});
```
#### (C) Passing in requests
```js
var engine = require('engine.io');
var server = new engine.Server();
server.on('connection', function(socket){
socket.send('hi');
});
// …
httpServer.on('upgrade', function(req, socket, head){
server.handleUpgrade(req, socket, head);
});
httpServer.on('request', function(req, res){
server.handleRequest(req, res);
});
```
### Client
```html
<script src="/path/to/engine.io.js"></script>
<script>
var socket = new eio.Socket('ws://localhost/');
socket.on('open', function(){
socket.on('message', function(data){});
socket.on('close', function(){});
});
</script>
```
For more information on the client refer to the
[engine-client](http://github.com/learnboost/engine.io-client) repository.
## What features does it have?
- **Maximum reliability**. Connections are established even in the presence of:
- proxies and load balancers.
- personal firewall and antivirus software.
- for more information refer to **Goals** and **Architecture** sections
- **Minimal client size** aided by:
- lazy loading of flash transports.
- lack of redundant transports.
- **Scalable**
- load balancer friendly
- **Future proof**
- **100% Node.JS core style**
- No API sugar (left for higher level projects)
- Written in readable vanilla JavaScript
## API
### Server
<hr><br>
#### Top-level
These are exposed by `require('engine.io')`:
##### Events
- `flush`
- Called when a socket buffer is being flushed.
- **Arguments**
- `Socket`: socket being flushed
- `Array`: write buffer
- `drain`
- Called when a socket buffer is drained
- **Arguments**
- `Socket`: socket being flushed
##### Properties
- `protocol` _(Number)_: protocol revision number
- `Server`: Server class constructor
- `Socket`: Socket class constructor
- `Transport` _(Function)_: transport constructor
- `transports` _(Object)_: map of available transports
##### Methods
- `()`
- Returns a new `Server` instance. If the first argument is an `http.Server` then the
new `Server` instance will be attached to it. Otherwise, the arguments are passed
directly to the `Server` constructor.
- **Parameters**
- `http.Server`: optional, server to attach to.
- `Object`: optional, options object (see `Server#constructor` api docs below)
The following are identical ways to instantiate a server and then attach it.
```js
var httpServer; // previously created with `http.createServer();` from node.js api.
// create a server first, and then attach
var eioServer = require('engine.io').Server();
eioServer.attach(httpServer);
// or call the module as a function to get `Server`
var eioServer = require('engine.io')();
eioServer.attach(httpServer);
// immediately attach
var eioServer = require('engine.io')(httpServer);
```
- `listen`
- Creates an `http.Server` which listens on the given port and attaches WS
to it. It returns `501 Not Implemented` for regular http requests.
- **Parameters**
- `Number`: port to listen on.
- `Object`: optional, options object
- `Function`: callback for `listen`.
- **Options**
- All options from `Server.attach` method, documented below.
- **Additionally** See Server `constructor` below for options you can pass for creating the new Server
- **Returns** `Server`
- `attach`
- Captures `upgrade` requests for a `http.Server`. In other words, makes
a regular http.Server WebSocket-compatible.
- **Parameters**
- `http.Server`: server to attach to.
- `Object`: optional, options object
- **Options**
- All options from `Server.attach` method, documented below.
- **Additionally** See Server `constructor` below for options you can pass for creating the new Server
- **Returns** `Server` a new Server instance.
<hr><br>
#### Server
The main server/manager. _Inherits from EventEmitter_.
##### Events
- `connection`
- Fired when a new connection is established.
- **Arguments**
- `Socket`: a Socket object
##### Properties
**Important**: if you plan to use Engine.IO in a scalable way, please
keep in mind the properties below will only reflect the clients connected
to a single process.
- `clients` _(Object)_: hash of connected clients by id.
- `clientsCount` _(Number)_: number of connected clients.
##### Methods
- **constructor**
- Initializes the server
- **Parameters**
- `Object`: optional, options object
- **Options**
- `pingTimeout` (`Number`): how many ms without a pong packet to
consider the connection closed (`60000`)
- `pingInterval` (`Number`): how many ms before sending a new ping
packet (`25000`)
- `upgradeTimeout` (`Number`): how many ms before an uncompleted transport upgrade is cancelled (`10000`)
- `maxHttpBufferSize` (`Number`): how many bytes or characters a message
can be, before closing the session (to avoid DoS). Default
value is `10E7`.
- `allowRequest` (`Function`): A function that receives a given handshake
or upgrade request as its first parameter, and can decide whether to
continue or not. The second argument is a function that needs to be
called with the decided information: `fn(err, success)`, where
`success` is a boolean value where false means that the request is
rejected, and err is an error code.
- `transports` (`<Array> String`): transports to allow connections
to (`['polling', 'websocket']`)
- `allowUpgrades` (`Boolean`): whether to allow transport upgrades
(`true`)
- `perMessageDeflate` (`Object|Boolean`): parameters of the WebSocket permessage-deflate extension
(see [ws module](https://github.com/einaros/ws) api docs). Set to `false` to disable. (`true`)
- `threshold` (`Number`): data is compressed only if the byte size is above this value (`1024`)
- `httpCompression` (`Object|Boolean`): parameters of the http compression for the polling transports
(see [zlib](http://nodejs.org/api/zlib.html#zlib_options) api docs). Set to `false` to disable. (`true`)
- `threshold` (`Number`): data is compressed only if the byte size is above this value (`1024`)
- `cookie` (`String|Boolean`): name of the HTTP cookie that
contains the client sid to send as part of handshake response
headers. Set to `false` to not send one. (`io`)
- `cookiePath` (`String|Boolean`): path of the above `cookie`
option. If false, no path will be sent, which means browsers will only send the cookie on the engine.io attached path (`/engine.io`).
Set false to not save io cookie on all requests. (`/`)
- `cookieHttpOnly` (`Boolean`): If `true` HttpOnly io cookie cannot be accessed by client-side APIs, such as JavaScript. (`true`) _This option has no effect if `cookie` or `cookiePath` is set to `false`._
- `wsEngine` (`String`)
没有合适的资源?快使用搜索试试~ 我知道了~
基于WebSocket火拼俄罗斯方块
共364个文件
js:131个
md:64个
json:50个
5星 · 超过95%的资源 需积分: 9 37 下载量 41 浏览量
2017-09-23
14:31:48
上传
评论 3
收藏 3.37MB ZIP 举报
温馨提示
跟着慕课网上基于webSocket火拼俄罗斯方块敲得,游戏双方通过socketIO通信,把自己游戏状态发送给对面,同时自己消行给别人干扰,先从控制台(cmd)进入js/文件夹下然后运行wsServer.js(node wsServer.js),然后打开2个index.html页面就能玩了
资源推荐
资源详情
资源评论
收起资源包目录
基于WebSocket火拼俄罗斯方块 (364个子文件)
WebSocket.cpp 16KB
HTTPSocket.cpp 13KB
Group.cpp 8KB
Hub.cpp 6KB
Extensions.cpp 4KB
Node.cpp 2KB
Networking.cpp 2KB
Epoll.cpp 2KB
addon.cpp 982B
Socket.cpp 726B
style.css 1KB
.eslintrc 180B
binding.gyp 2KB
addon.h 19KB
http.h 18KB
Socket.h 17KB
WebSocketProtocol.h 13KB
HTTPSocket.h 9KB
Node.h 6KB
Networking.h 6KB
Epoll.h 6KB
Group.h 5KB
Asio.h 4KB
Libuv.h 4KB
WebSocket.h 4KB
Hub.h 3KB
Extensions.h 529B
Backend.h 321B
uWS.h 75B
index.html 2KB
engine.io.js 110KB
socket.io.js 60KB
socket.io.js 60KB
socket.io.slim.js 52KB
WebSocket.js 20KB
Connection.js 19KB
socket.js 18KB
XMLHttpRequest.js 18KB
uws.js 17KB
server.js 15KB
browser.js 14KB
Receiver.js 13KB
manager.js 12KB
socket.js 11KB
index.js 11KB
index.js 11KB
socket.js 11KB
PerMessageDeflate.js 10KB
game.js 10KB
Sender.js 10KB
WebSocketServer.js 9KB
polling-xhr.js 9KB
polling.js 8KB
socket.js 8KB
index.js 8KB
utf8.js 7KB
slice-buffer.js 6KB
websocket.js 6KB
node.js 6KB
squareFactory.js 5KB
index.js 5KB
mediaType.js 5KB
client.js 5KB
namespace.js 5KB
index.js 5KB
polling.js 5KB
polling-jsonp.js 5KB
local.js 5KB
browser.js 5KB
debug.js 4KB
binary.js 4KB
frame.js 4KB
index.js 4KB
Server.js 4KB
EventTarget.js 4KB
index.js 4KB
encoding.js 3KB
language.js 3KB
index.js 3KB
index.js 3KB
index.js 3KB
index.js 3KB
charset.js 3KB
test.js 3KB
transport.js 3KB
index.js 3KB
wsServer.js 3KB
index.js 3KB
test-headers.js 3KB
websocket.js 2KB
engine.io.js 2KB
base64id.js 2KB
test.js 2KB
remote.js 2KB
index.js 2KB
after-test.js 2KB
transport.js 2KB
square.js 2KB
index.js 2KB
base64-arraybuffer.js 2KB
共 364 条
- 1
- 2
- 3
- 4
资源评论
- 晓呆同学2018-12-30还可以把,打开就能玩了
- Coinker2019-08-06挺好的,学习了!
- cizhu92552018-07-15还可以把,打开就能玩了
小小小西瓜_
- 粉丝: 29
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js基础但是这个烂怂东西要求标题不能少于10个字才能上传然后我其实还没有写完之后再修订吧.md
- electron-tabs-master
- Unity3D 布朗运动算法插件 Brownian Motion
- 鼎微R16中控升级包R16-4.5.10-20170221及强制升级方法
- 鼎微R16中控升级包公版UI 2015及强制升级方法,救砖包
- 基于CSS与JavaScript的积分系统设计源码
- 生物化学作业_1_生物化学作业资料.pdf
- 基于libgdx引擎的Java开发连连看游戏设计源码
- 基于MobileNetV3的SSD目标检测算法PyTorch实现设计源码
- 基于Java JDK的全面框架设计源码学习项目
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功