diff --git a/lib/client/http-tracker.js b/lib/client/http-tracker.js index 282c60a..8b767e2 100644 --- a/lib/client/http-tracker.js +++ b/lib/client/http-tracker.js @@ -49,7 +49,9 @@ HTTPTracker.prototype.announce = function (opts) { }) if (self._trackerId) params.trackerid = self._trackerId - self._request(self.announceUrl, params, self._onAnnounceResponse.bind(self)) + self._request(self.announceUrl, params, function (data) { + self._onAnnounceResponse(data) + }) } HTTPTracker.prototype.scrape = function (opts) { @@ -69,7 +71,9 @@ HTTPTracker.prototype.scrape = function (opts) { var params = { info_hash: infoHashes } - self._request(self.scrapeUrl, params, self._onScrapeResponse.bind(self)) + self._request(self.scrapeUrl, params, function (data) { + self._onScrapeResponse(data) + }) } HTTPTracker.prototype.destroy = function (cb) { diff --git a/lib/client/tracker.js b/lib/client/tracker.js index eb8b14d..73de2cd 100644 --- a/lib/client/tracker.js +++ b/lib/client/tracker.js @@ -22,8 +22,9 @@ Tracker.prototype.setInterval = function (intervalMs) { clearInterval(self.interval) if (intervalMs) { - var update = self.announce.bind(self, self.client._defaultAnnounceOpts()) - self.interval = setInterval(update, intervalMs) + self.interval = setInterval(function () { + self.announce(self.client._defaultAnnounceOpts()) + }, intervalMs) if (self.interval.unref) self.interval.unref() } } diff --git a/lib/client/websocket-tracker.js b/lib/client/websocket-tracker.js index aab6424..16531c7 100644 --- a/lib/client/websocket-tracker.js +++ b/lib/client/websocket-tracker.js @@ -43,7 +43,10 @@ WebSocketTracker.prototype.announce = function (opts) { var self = this if (self.destroyed || self.reconnecting) return if (!self.socket.connected) { - return self.socket.once('connect', self.announce.bind(self, opts)) + self.socket.once('connect', function () { + self.announce(opts) + }) + return } var params = extend(opts, { @@ -72,7 +75,10 @@ WebSocketTracker.prototype.scrape = function (opts) { var self = this if (self.destroyed || self.reconnecting) return if (!self.socket.connected) { - return self.socket.once('connect', self.scrape.bind(self, opts)) + self.socket.once('connect', function () { + self.scrape(opts) + }) + return } var infoHashes = (Array.isArray(opts.infoHash) && opts.infoHash.length > 0) @@ -142,10 +148,18 @@ WebSocketTracker.prototype._openSocket = function () { if (!self.peers) self.peers = {} - self._onSocketConnectBound = self._onSocketConnect.bind(self) - self._onSocketErrorBound = self._onSocketError.bind(self) - self._onSocketDataBound = self._onSocketData.bind(self) - self._onSocketCloseBound = self._onSocketClose.bind(self) + self._onSocketConnectBound = function () { + self._onSocketConnect() + } + self._onSocketErrorBound = function (err) { + self._onSocketError(err) + } + self._onSocketDataBound = function (data) { + self._onSocketData(data) + } + self._onSocketCloseBound = function () { + self._onSocketClose() + } self.socket = socketPool[self.announceUrl] if (self.socket) { diff --git a/server.js b/server.js index 3bf01e1..f430daa 100644 --- a/server.js +++ b/server.js @@ -113,7 +113,9 @@ function Server (opts) { }) } self.ws = new WebSocketServer({ server: self.http }) - self.ws.address = self.http.address.bind(self.http) + self.ws.address = function () { + return self.http.address() + } self.ws.on('error', function (err) { self._onError(err) }) self.ws.on('connection', function (socket) { self.onWebSocketConnection(socket) }) } @@ -301,15 +303,23 @@ Server.prototype.onWebSocketConnection = function (socket, opts) { socket.peerId = null // as hex socket.infoHashes = [] // swarms that this socket is participating in - socket.onSend = self._onWebSocketSend.bind(self, socket) + socket.onSend = function (err) { + self._onWebSocketSend(socket, err) + } - socket.onMessageBound = self._onWebSocketRequest.bind(self, socket, opts) + socket.onMessageBound = function (params) { + self._onWebSocketRequest(socket, opts, params) + } socket.on('message', socket.onMessageBound) - socket.onErrorBound = self._onWebSocketError.bind(self, socket) + socket.onErrorBound = function (err) { + self._onWebSocketError(socket, err) + } socket.on('error', socket.onErrorBound) - socket.onCloseBound = self._onWebSocketClose.bind(self, socket) + socket.onCloseBound = function () { + self._onWebSocketClose(socket) + } socket.on('close', socket.onCloseBound) }