use uWS as optional dependency for ws server (#3231)

* use uWS as optional dependency for ws server

* Update ParseWebSocketServer.js
This commit is contained in:
Florent Vilmart
2017-01-14 10:43:31 -05:00
committed by Arthur Cinader
parent b2a3479dbf
commit c26db2248f
3 changed files with 14 additions and 3 deletions

View File

@@ -84,6 +84,7 @@
"parse-server": "./bin/parse-server"
},
"optionalDependencies": {
"bcrypt": "1.0.2"
"bcrypt": "1.0.2",
"uws": "^0.12.0"
}
}

View File

@@ -14,7 +14,9 @@ describe('ParseWebSocketServer', function() {
it('can handle connect event when ws is open', function(done) {
var onConnectCallback = jasmine.createSpy('onConnectCallback');
var parseWebSocketServer = new ParseWebSocketServer({}, onConnectCallback, 5).server;
var http = require('http');
var server = http.createServer();
var parseWebSocketServer = new ParseWebSocketServer(server, onConnectCallback, 5).server;
var ws = {
readyState: 0,
OPEN: 0,
@@ -27,6 +29,7 @@ describe('ParseWebSocketServer', function() {
// Make sure we ping to the client
setTimeout(function() {
expect(ws.ping).toHaveBeenCalled();
server.close();
done();
}, 10)
});

View File

@@ -1,12 +1,19 @@
import logger from '../logger';
const typeMap = new Map([['disconnect', 'close']]);
const getWS = function() {
try {
return require('uws');
} catch(e) {
return require('ws');
}
}
export class ParseWebSocketServer {
server: Object;
constructor(server: any, onConnect: Function, websocketTimeout: number = 10 * 1000) {
const WebSocketServer = require('ws').Server;
const WebSocketServer = getWS().Server;
const wss = new WebSocketServer({ server: server });
wss.on('listening', () => {
logger.info('Parse LiveQuery Server starts running');