Pass server
or port
option to PeerServer
This allows to initialize websocket server properly
This commit is contained in:
parent
bcb585065b
commit
2ce55f8e33
19
README.md
19
README.md
@ -28,7 +28,7 @@ Or, create a custom server:
|
|||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var PeerServer = require('peer').PeerServer;
|
var PeerServer = require('peer').PeerServer;
|
||||||
var server = new PeerServer({port: 9000, path: '/myapp'});
|
var server = PeerServer({port: 9000, path: '/myapp'});
|
||||||
```
|
```
|
||||||
|
|
||||||
Connecting to the server from PeerJS:
|
Connecting to the server from PeerJS:
|
||||||
@ -47,13 +47,28 @@ var fs = require('fs');
|
|||||||
var PeerServer = require('peer').PeerServer;
|
var PeerServer = require('peer').PeerServer;
|
||||||
|
|
||||||
var server = PeerServer({
|
var server = PeerServer({
|
||||||
|
port: 9000,
|
||||||
ssl: {
|
ssl: {
|
||||||
key: fs.readFileSync('/path/to/your/ssl/key/here.key'),
|
key: fs.readFileSync('/path/to/your/ssl/key/here.key'),
|
||||||
certificate: fs.readFileSync('/path/to/your/ssl/certificate/here.crt')
|
certificate: fs.readFileSync('/path/to/your/ssl/certificate/here.crt')
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
```
|
||||||
|
|
||||||
server.listen(9000);
|
### Combining with existing express app
|
||||||
|
|
||||||
|
WebSocket server needs server instance to bootup, so we should create express app, then get server from `listen` method and only after that bind PeerServer to express application.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var express = require('express');
|
||||||
|
var app = express();
|
||||||
|
var PeerServer = require('peer').PeerServer;
|
||||||
|
|
||||||
|
app.get('/', function (req, res, next) { res.send('Hello world!'); });
|
||||||
|
|
||||||
|
var server = app.listen(9000);
|
||||||
|
|
||||||
|
app.use(PeerServer({ server: server, path: '/api' }));
|
||||||
```
|
```
|
||||||
|
|
||||||
### Events
|
### Events
|
||||||
|
23
lib/index.js
23
lib/index.js
@ -1,18 +1,23 @@
|
|||||||
var express = require('express');
|
var express = require('express');
|
||||||
var mixin = require('utils-merge');
|
var mixin = require('utils-merge');
|
||||||
var proto = require('./server');
|
var proto = require('./server');
|
||||||
|
var util = require('./util');
|
||||||
|
var http = require('http');
|
||||||
|
|
||||||
exports = module.exports = {
|
exports = module.exports = {
|
||||||
PeerServer: createPeerServer
|
PeerServer: createPeerServer
|
||||||
};
|
};
|
||||||
|
|
||||||
function createPeerServer(options) {
|
function createPeerServer(options, callback) {
|
||||||
|
|
||||||
var app = express();
|
var app = express();
|
||||||
|
|
||||||
mixin(app, proto);
|
mixin(app, proto);
|
||||||
|
|
||||||
app.options = {
|
app.options = {
|
||||||
|
host: '0.0.0.0',
|
||||||
|
port: null,
|
||||||
|
server: null,
|
||||||
debug: false,
|
debug: false,
|
||||||
timeout: 5000,
|
timeout: 5000,
|
||||||
key: 'peerjs',
|
key: 'peerjs',
|
||||||
@ -46,9 +51,6 @@ function createPeerServer(options) {
|
|||||||
// Messages waiting for another peer.
|
// Messages waiting for another peer.
|
||||||
app._outstanding = {};
|
app._outstanding = {};
|
||||||
|
|
||||||
// Initailize WebSocket server handlers.
|
|
||||||
app._initializeWSS();
|
|
||||||
|
|
||||||
// Initialize HTTP routes. This is only used for the first few milliseconds
|
// Initialize HTTP routes. This is only used for the first few milliseconds
|
||||||
// before a socket is opened for a Peer.
|
// before a socket is opened for a Peer.
|
||||||
app._initializeHTTP();
|
app._initializeHTTP();
|
||||||
@ -58,5 +60,18 @@ function createPeerServer(options) {
|
|||||||
|
|
||||||
app._setCleanupIntervals();
|
app._setCleanupIntervals();
|
||||||
|
|
||||||
|
app._server = options.server;
|
||||||
|
|
||||||
|
if (app.options.port) {
|
||||||
|
app._server = http.createServer(app);
|
||||||
|
app._server.listen(options.port, options.host, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!app._server) {
|
||||||
|
throw new Error('Neither port or server is passed to constructor - can\'t start PeerServer');
|
||||||
|
}
|
||||||
|
|
||||||
|
app._initializeWSS();
|
||||||
|
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ app._initializeWSS = function() {
|
|||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
// Create WebSocket server as well.
|
// Create WebSocket server as well.
|
||||||
this._wss = new WebSocketServer({ path: this.options.path + 'peerjs', server: this});
|
this._wss = new WebSocketServer({ path: this.options.path + 'peerjs', server: this._server});
|
||||||
|
|
||||||
this._wss.on('connection', function(socket) {
|
this._wss.on('connection', function(socket) {
|
||||||
var query = url.parse(socket.upgradeReq.url, true).query;
|
var query = url.parse(socket.upgradeReq.url, true).query;
|
||||||
@ -45,6 +45,7 @@ app._initializeWSS = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
app._configureWS = function(socket, key, id, token) {
|
app._configureWS = function(socket, key, id, token) {
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
var client = this._clients[key][id];
|
var client = this._clients[key][id];
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user