WebSocket
Endpoint
Ten endpoint zapewnia strumień ofert z marketplace'ów w czasie rzeczywistym przez WebSocket. Po połączeniu i subskrypcji otrzymujesz listingi przedmiotów na żywo, wykrywane na obsługiwanych marketplace'ach.
Uwierzytelnianie
Dołącz swój klucz API jako parametr zapytania apiKey podczas łączenia.
wss://marketplaceapi.steamapis.com/ws/v2/offers?apiKey=YourSecretAPIKey
websocketAccess. Skontaktuj się z pomocą techniczną, jeśli potrzebujesz dodania tego uprawnienia do swojego klucza.Kompresja
Serwer wymaga rozszerzenia WebSocket permessage-deflate. Większość klientów negocjuje to automatycznie. Jeśli twój tego nie robi, wyślij nagłówek rozszerzenia jawnie podczas łączenia:
Sec-WebSocket-Extensions: permessage-deflate
Bez niego handshake kończy się błędem 400 Bad Request z komunikatem permessage-deflate is required.
Limity
Każdy klucz API jest ograniczony do 2 równoczesnych połączeń. Otwarcie trzeciego połączenia powoduje jego zamknięcie z kodem 1008 (Policy Violation).
Wiadomość subskrypcji
Po połączeniu wyślij wiadomość JSON, aby zasubskrybować wybrane marketplace'y i gry. subscribeTo i games są wymagane; newFloorOnly jest opcjonalne.
all lub -1, aby zasubskrybować wszystkie marketplace'y. Wielkość liter nie ma znaczenia. Zobacz Referencja po pełną listę.all lub -1, aby zasubskrybować wszystkie gry. Wielkość liter nie ma znaczenia. Zobacz Referencja po pełną listę.false. Gdy true, wysyłane są tylko oferty, które ustawiają nową najniższą cenę dla swojego przedmiotu na swoim marketplace'ie.Przykład subskrypcji
const ws = new WebSocket('wss://marketplaceapi.steamapis.com/ws/v2/offers?apiKey=YOUR_API_KEY');
ws.onopen = () => {
ws.send(JSON.stringify({
subscribeTo: ['Buff163', 'CSFloat', 'SkinPort'],
games: ['CS2', 'Dota2'],
newFloorOnly: true
}));
};
ws.onmessage = (event) => {
const message = JSON.parse(event.data);
if (message.type === 'subscribed') {
console.log('Subscribed to:', message.marketplaces, message.games);
} else if (message.type === 'offer') {
console.log('New offer:', message.data.name, '$' + message.data.priceUSD);
} else if (message.type === 'error') {
console.error('Error:', message.error);
}
};
ws.onerror = (error) => console.error('WebSocket error:', error);
ws.onclose = () => console.log('Disconnected');
Wiadomość potwierdzenia
Po udanej subskrypcji otrzymasz wiadomość potwierdzającą.
{
"type": "subscribed",
"marketplaces": ["Buff163", "CSFloat", "SkinPort"],
"games": ["CS2", "Dota2"],
"message": "Successfully subscribed to offer stream"
}
Komunikaty błędów
Błędy są zwracane jako wiadomości JSON z type: "error".
| Błąd | Przyczyna |
|---|---|
Invalid API key | Podany klucz API nie został znaleziony |
WebSocket access not enabled | Twój klucz API nie ma uprawnienia websocketAccess |
API key disabled | Twoje konto zostało wyłączone |
subscribeTo field is required | Brak pola subscribeTo w wiadomości subskrypcji |
games field is required | Brak pola games w wiadomości subskrypcji |
Unknown marketplace: X | Nieprawidłowa nazwa lub ID marketplace'u |
Unknown game: X | Nieprawidłowa nazwa lub ID gry |