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:
committed by
Arthur Cinader
parent
b2a3479dbf
commit
c26db2248f
@@ -84,6 +84,7 @@
|
|||||||
"parse-server": "./bin/parse-server"
|
"parse-server": "./bin/parse-server"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"bcrypt": "1.0.2"
|
"bcrypt": "1.0.2",
|
||||||
|
"uws": "^0.12.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,9 @@ describe('ParseWebSocketServer', function() {
|
|||||||
|
|
||||||
it('can handle connect event when ws is open', function(done) {
|
it('can handle connect event when ws is open', function(done) {
|
||||||
var onConnectCallback = jasmine.createSpy('onConnectCallback');
|
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 = {
|
var ws = {
|
||||||
readyState: 0,
|
readyState: 0,
|
||||||
OPEN: 0,
|
OPEN: 0,
|
||||||
@@ -27,6 +29,7 @@ describe('ParseWebSocketServer', function() {
|
|||||||
// Make sure we ping to the client
|
// Make sure we ping to the client
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
expect(ws.ping).toHaveBeenCalled();
|
expect(ws.ping).toHaveBeenCalled();
|
||||||
|
server.close();
|
||||||
done();
|
done();
|
||||||
}, 10)
|
}, 10)
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,12 +1,19 @@
|
|||||||
import logger from '../logger';
|
import logger from '../logger';
|
||||||
|
|
||||||
const typeMap = new Map([['disconnect', 'close']]);
|
const typeMap = new Map([['disconnect', 'close']]);
|
||||||
|
const getWS = function() {
|
||||||
|
try {
|
||||||
|
return require('uws');
|
||||||
|
} catch(e) {
|
||||||
|
return require('ws');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class ParseWebSocketServer {
|
export class ParseWebSocketServer {
|
||||||
server: Object;
|
server: Object;
|
||||||
|
|
||||||
constructor(server: any, onConnect: Function, websocketTimeout: number = 10 * 1000) {
|
constructor(server: any, onConnect: Function, websocketTimeout: number = 10 * 1000) {
|
||||||
const WebSocketServer = require('ws').Server;
|
const WebSocketServer = getWS().Server;
|
||||||
const wss = new WebSocketServer({ server: server });
|
const wss = new WebSocketServer({ server: server });
|
||||||
wss.on('listening', () => {
|
wss.on('listening', () => {
|
||||||
logger.info('Parse LiveQuery Server starts running');
|
logger.info('Parse LiveQuery Server starts running');
|
||||||
|
|||||||
Reference in New Issue
Block a user