UNPKG

nobloxmmc.js

Version:

A Node.js wrapper for ROBLOX. (original from sentanos)

50 lines (46 loc) 1.68 kB
// Dependencies var SignalR = require('signalr-client').client var events = require('events') // Includes var getSession = require('../util/getSession.js').func var settings = require('../../settings.json') // Args exports.optional = ['jar'] // Define exports.func = function (args) { var max = settings.event.maxRetries var notifications = new events.EventEmitter() function connect (retries) { var session = getSession({ jar: args.jar }) var client = new SignalR('wss://realtime.roblox.com/notifications', ['usernotificationhub'], 3, true) // wss for https client.headers['Cookie'] = '.ROBLOSECURITY=' + session + ';' client.on('usernotificationhub', 'notification', function (name, message) { notifications.emit('data', name, JSON.parse(message)) }) notifications.on('close', client.end) client.serviceHandlers.connectFailed = function (err) { notifications.emit('error', new Error('Connection failed: ' + err.message)) if (retries !== -1) { if (retries > max) { notifications.emit('close', new Error('Max retries reached')) } else { setTimeout(connect, 5000, retries + 1) } } } client.serviceHandlers.onerror = function (err) { notifications.emit('error', err) } client.serviceHandlers.connected = function (connection) { notifications.emit('connect', connection) } client.serviceHandlers.reconnecting = function () { setTimeout(connect, 5000, 0) notifications.emit('error', new Error('Lost connection, reconnecting')) return true // Abort reconnection } client.start() } connect(-1) return notifications }