The events websocket service emits a live stream of backpack.tf system events. You can use this to gather up-to-date information about Classifieds listings.
Be warned that the websocket server will emit a large amount of data and does not provide any event filtering -- use your own tools to process the data you need. This could be as simple as piping all events into a database that you can query in another part of your application.
Connection URI
wss://ws.backpack.tf/events
Events
The following events are provided by the websocket:
listing-update
Fired whenever a listing is created or updated. The exception to this is whenever listings are bumped, or when currency values are updated from a price suggestion (this causes all listings to have their value recalculated).
Re-publishing an archived listing is considered an update.
listing-delete
Fired whenever a listing is deleted. Moving a listing to the archive is also considered to be deleting the listing.
Event IDs
Each event has a unique 12-byte alphanumeric ID. The first four bytes of the ID is a 32-bit timestamp. Check here for more information on this format.
Quick Start
Requires a websocket library.
import WebSocket from 'ws'; const ws = new WebSocket('wss://ws.backpack.tf/events'); ws.on('open', function open() { console.log("websocket running") }) function handleEvent(e) { switch (e.event) { case 'listing-update': console.log(`listing ${e.payload.id} by ${e.payload.user.id} was updated (or created).`) break; case 'listing-delete': console.log(`listing ${e.payload.id} by ${e.payload.user.id} was deleted.`) break; } } ws.on('message', data => { JSON.parse(data).forEach(handleEvent) });
Connecting with the batch-test header
Temporarily, the batch-test header enables the new batch frame method. You should keep this enabled if you have confirmed that it works for your script.
const ws = new WebSocket( 'wss://ws.backpack.tf/events', undefined, { headers: { 'batch-test': true } } );
Handling connection loss
On occasion, the websocket server may restart. Assume this might happen, as we may update or perform maintenance on the websocket server at any moment.
If using Node.js, you can use reconnecting-websocket to gracefully manage the websocket connection.