Added optional parameter to use a custom function to generate IDs.
The third parameter passed to PeerServer or ExpressPeerServer can optionally be a function that returns any string value, which will be used as the client ID. Checking whether the ID is already taken is not to be handled by the function. For instance: ExpressPeerServer(,,() => { return 'abc'; })
This commit is contained in:
parent
910bf3f674
commit
2552e9d5f1
@ -3,7 +3,7 @@ const cors = require('cors');
|
||||
const bodyParser = require('body-parser');
|
||||
const publicContent = require('../../app.json');
|
||||
|
||||
module.exports = ({ config, realm, messageHandler }) => {
|
||||
module.exports = ({ config, realm, messageHandler, randomId }) => {
|
||||
const authMiddleware = require('./middleware/auth')({ config, realm });
|
||||
|
||||
const app = express.Router();
|
||||
@ -16,7 +16,7 @@ module.exports = ({ config, realm, messageHandler }) => {
|
||||
res.send(publicContent);
|
||||
});
|
||||
|
||||
app.use('/:key', require('./v1/public')({ config, realm }));
|
||||
app.use('/:key', require('./v1/public')({ config, realm, randomId }));
|
||||
app.use('/:key/:id/:token', authMiddleware, jsonParser, require('./v1/calls')({ realm, messageHandler }));
|
||||
|
||||
return app;
|
||||
|
@ -1,12 +1,13 @@
|
||||
const express = require('express');
|
||||
|
||||
module.exports = ({ config, realm }) => {
|
||||
module.exports = ({ config, realm, randomId }) => {
|
||||
const app = express.Router();
|
||||
|
||||
// Retrieve guaranteed random ID.
|
||||
app.get('/id', (req, res) => {
|
||||
res.contentType = 'text/html';
|
||||
res.send(realm.generateClientId());
|
||||
console.error('src/api/v1/public/index.js', randomId);
|
||||
res.send(realm.generateClientId(randomId));
|
||||
});
|
||||
|
||||
// Get a list of all peers for a key, enabled by the `allowDiscovery` flag.
|
||||
|
12
src/index.js
12
src/index.js
@ -6,11 +6,11 @@ const defaultConfig = require('../config');
|
||||
const WebSocketServer = require('./services/webSocketServer');
|
||||
const Realm = require('./models/realm');
|
||||
|
||||
const init = ({ app, server, options }) => {
|
||||
const init = ({ app, server, options, randomId }) => {
|
||||
const config = options;
|
||||
const realm = new Realm();
|
||||
const messageHandler = require('./messageHandler')({ realm });
|
||||
const api = require('./api')({ config, realm, messageHandler });
|
||||
const api = require('./api')({ config, realm, messageHandler, randomId });
|
||||
|
||||
const { startMessagesExpiration } = require('./services/messagesExpire')({ realm, config, messageHandler });
|
||||
const checkBrokenConnections = require('./services/checkBrokenConnections')({
|
||||
@ -62,7 +62,7 @@ const init = ({ app, server, options }) => {
|
||||
checkBrokenConnections.start();
|
||||
};
|
||||
|
||||
function ExpressPeerServer(server, options) {
|
||||
function ExpressPeerServer(server, options, randomId) {
|
||||
const app = express();
|
||||
|
||||
options = {
|
||||
@ -80,13 +80,13 @@ function ExpressPeerServer(server, options) {
|
||||
'can\'t start PeerServer');
|
||||
}
|
||||
|
||||
init({ app, server, options });
|
||||
init({ app, server, options, randomId });
|
||||
});
|
||||
|
||||
return app;
|
||||
}
|
||||
|
||||
function PeerServer(options = {}, callback) {
|
||||
function PeerServer(options = {}, callback, randomId) {
|
||||
const app = express();
|
||||
|
||||
options = {
|
||||
@ -114,7 +114,7 @@ function PeerServer(options = {}, callback) {
|
||||
server = http.createServer(app);
|
||||
}
|
||||
|
||||
const peerjs = ExpressPeerServer(server, options);
|
||||
const peerjs = ExpressPeerServer(server, options, randomId);
|
||||
app.use(peerjs);
|
||||
|
||||
if (callback) {
|
||||
|
@ -42,10 +42,12 @@ class Realm {
|
||||
this._messageQueues.delete(id);
|
||||
}
|
||||
|
||||
generateClientId () {
|
||||
const randomId = () => (Math.random().toString(36) + '0000000000000000000').substr(2, 16);
|
||||
generateClientId (_randomId) {
|
||||
const randomId = typeof _randomId === 'function' ?
|
||||
() => _randomId :
|
||||
() => (Math.random().toString(36) + '0000000000000000000').substr(2, 16);
|
||||
|
||||
let clientId = randomId();
|
||||
let clientId = randomId(randomId)();
|
||||
|
||||
while (this.getClientById(clientId)) {
|
||||
clientId = randomId();
|
||||
|
Loading…
x
Reference in New Issue
Block a user