96 lines
2.3 KiB
JavaScript
96 lines
2.3 KiB
JavaScript
const WebSocket = require('ws');
|
|
const config = require('./config');
|
|
const http = require('http');
|
|
|
|
var wss = null;
|
|
|
|
var server = http.createServer(
|
|
|
|
function(req, res) {
|
|
|
|
res.setHeader('Content-Type', 'application/json');
|
|
|
|
wss.clients.forEach(
|
|
function(client){
|
|
if (client.readyState === WebSocket.OPEN) {
|
|
var cache = [];
|
|
|
|
res.write(
|
|
|
|
JSON.stringify(client,
|
|
|
|
function(key, value) {
|
|
|
|
|
|
if (typeof value === 'object' && value !== null) {
|
|
if (cache.indexOf(value) !== -1) {
|
|
// Duplicate reference found
|
|
try {
|
|
// If this value does not reference a parent it can be deduped
|
|
return JSON.parse(JSON.stringify(value));
|
|
} catch (error) {
|
|
// discard key if value cannot be deduped
|
|
return;
|
|
}
|
|
}
|
|
// Store value in our collection
|
|
cache.push(value);
|
|
}
|
|
return value;
|
|
}
|
|
|
|
)
|
|
);
|
|
|
|
cache = null;
|
|
}
|
|
}
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
res.end();
|
|
}
|
|
|
|
);
|
|
|
|
|
|
wss = new WebSocket.Server(
|
|
{
|
|
server : server,
|
|
perMessageDeflate: false
|
|
}
|
|
);
|
|
|
|
|
|
|
|
server.on(
|
|
'listening',
|
|
function() {
|
|
|
|
var address = server.address();
|
|
|
|
console.log(
|
|
'R3 Websocket Server started listening on ' + address.address +
|
|
':' + address.port,
|
|
'(' + address.family + ')'
|
|
);
|
|
|
|
}
|
|
);
|
|
|
|
wss.on(
|
|
'connection',
|
|
function connection(websocket) {
|
|
|
|
websocket.on('message', function incoming(message) {
|
|
console.log('received: %s', message);
|
|
});
|
|
|
|
websocket.send('something');
|
|
}
|
|
);
|
|
|
|
server.listen(config.websocket.port); |