API訂閱 | Websocket訂閱 | 主動發送訂閱 | |
---|---|---|---|
說明 | 訂閱者自行開發抓取資料的服務,定時呼叫我方提供的API取得資料 | 訂閱者建立Websocket連線,透過WSS取得及時變動資料 | 訂閱者提供API,我們設置服務主動將變動資料推送到訂閱者API接口 |
使用流程 | 訂閱者使用時間戳記呼叫API取得該時間區段中有變動的資料 | 建立WebSocket連線取得變動資料 | 初始化時需要透過API取得所有資料,之後我們主動呼叫API傳送變動資料 |
即時性 | 約慢另兩方案1秒 | 最快 | 最快 |
初始資料來源 | 彙整後資料 | 爬蟲原始資料 | 爬蟲原始資料 |
即時警示 | 訂閱者從API回傳資料中自行判斷 | Service提供 | Service提供,但訂閱者需提供對應的API接口 |
資料壓縮 | 無 | Gzip | Gzip |
範例: | Step1.透過API取得全部資料 ex:https://ls.zbdigital.net/api/data/SC/bet365.com/Odd?lastAccessTime=1606112039 | 程式碼請參考: https://ls.zbdigital.net/MatchClient .NET Core C# 請下載: https://ls.zbdigital.net/downloads/MatchesSample.zip 頻道訂閱參數請參考 https://ls.zbdigital.net/WSSKey | Step1.透過API取得全部資料 Step2.由我方Call對應API提供資料 |
參數說明請參考https://ls.zbdigital.net/Index ,以下為常用的場景
場景 | API | 結果 |
---|---|---|
第一次,要取得當天所有賽事 | /api/data/{companyCode}/{gameType}/{site}/{subscribeType} | 取得今明兩天所有尚未結束的賽事 |
取得一個時段內有變動的賽事 | /api/data/{companyCode}/{gameType}/{site}/{subscribeType}?lastAccessTime=1606112039 | 從1606112039到現在的所有變動賽事 |
取得比賽結果 | /api/data/{companyCode}/{gameType}/{site}/{subscribeType}?IsFinal = true | 當天已經結束的比賽內容 |
某一個站台的聯盟名稱 | v1/siteleagues/{GameType}?site=bet365.com | bet365.com對應球種的聯盟,如有不同語系內容則一併回傳 |
某一個站台的特定聯盟的所有Team | /api/siteteams/{GameType}/{site}/{sitelids} 或是 /api/siteteams/{GameType}?site=bet365.com 該站台所有的隊伍 | bet365.com對應球種,聯盟的隊名,如有不同語系則一併內容回傳 |
某一場賽事的比賽進程 | /api/matchhistories/{GameType}/{site}/{sitelid}/{sitegid} | 單一場比賽的比分,PlayByPlay的全程內容(Match,PlayByPlay為Json字串) |
檢查我方服務是否正常運行 | /heart | 如有回傳現在時間表示目前系統正常運行中. |
系統有哪些站台,球種 | /api/schema | 回傳系統的站台,球種代號 |
注意:呼叫API時,Header必須要給X-Auth作為驗證(測試用Token為: 4xj7SsVlROxLHggt )
(Postman範例)
本文只對比賽內容結構和欄位進行說明.其他請參考https://ls.zbdigital.net/Index
賽事 (SiteGameOutputDto)結構層級如下(json)欄位說明:
|
範例
{ "GameType": "SC", "Site": "bet365.com", "SendTime": 1606114599, "SiteGames": [ { "League": "Esoccer Battle - 8 mins play", "Team2": "Lazio (jkey) Esports", "Team1": "Napoli (Rebels) Esports", "GameDate": "2020-11-23", "GameTime": "02:42", "GameID": "1ae01408ba-2020-11-23", "Score2": 0, "Score1": 0, "GameStatus": "PreGame", "PlayByPlay": [], "Odds": [ { "PlayMode": "HA", "Prices": [ { "OriginSpread": "Full Time Result", "Spread": "1X2", "Odds": [ { "OddType": "1", "Odd": 7, "Result":"W" }, { "OddType": "T", "Odd": 0.28, "Result":"L" }, { "OddType": "2", "Odd": 4, "Result":"L" } ] }, { "OriginSpread": "1.0,1.5", "Spread": "-1+50", "Odds": [ { "OddType": "1", "Odd": -1, "Result":"WR" }, { "OddType": "2", "Odd": -1, "Result":"LR" } ] }, { "OriginSpread": "1.5", "Spread": "-1.5", "Odds": [ { "OddType": "1", "Odd": 0.8, "Result":"W" }, { "OddType": "2", "Odd": 0.9, "Result":"L" } ] } ] }, { "PlayMode": "OU", "Prices": [ { "OriginSpread": "3.0", "Spread": "3", "Odds": [ { "OddType": "O", "Odd": 0.95, "Result":"W" }, { "OddType": "U", "Odd": 0.75, "Result":"L" } ] } ] } ] }] } |