股票行情 app,是不是要用 socket?

2016-10-22 15:09:49 +08:00
 callmexiaoliu

小白一个。 我想搞一个实时的行情 app 练练手,找到了一些可以用的免费 api 来取数据。(聚合,新浪,雅虎什么的) 真要写的时候遇到一个问题,我发一次请求只能从他们那里得到一个时间点的数据,比如发送

http://web.juhe.cn:8080/finance/stock/hs?gid=sh601009&key=APPKEY

它只能返回 { "resultcode":"200", /返回码, 200:正常/ "reason":"SUCCESSED!", "result":[ { "data":{ "gid":"sh601009", /股票编号/ "increPer": "9.91", /涨跌百分比/ "increase": "43.99", /涨跌额/ "name":"南京银行", /股票名称/ "todayStartPri":"8.26", /今日开盘价/ "yestodEndPri":"8.26", /昨日收盘价/ "nowPri":"8.37", /当前价格/ "todayMax":"8.55", /今日最高价/ "todayMin":"8.25", /今日最低价/ "competitivePri":"8.37", /竞买价/ "reservePri":"8.38", /竞卖价/ "traNumber":"34501453", /成交量/ "traAmount":"290889560", /成交金额/ "buyOne":"10870", /买一/ "buyOnePri":"8.37", /买一报价/ "buyTwo":"177241", /买二/ "buyTwoPri":"8.36", /买二报价/ "buyThree":"92600", /买三/ "buyThreePri":"8.35", /买三报价/ "buyFour":"87200" /买四/ "buyFourPri":"8.34", /买四报价/ "buyFive":"113700", /买五/ "buyFivePri":"8.42", /买五报价/ "sellOne":"47556", /卖一/ "sellOnePri":"8.38", /卖一报价/ "sellTwo":"103057", /卖二/ "sellTwoPri":"8.39", /卖二报价/ "sellThree":"186689", /卖三/ "sellThreePri":"8.40", /卖三报价/ "sellFour":"49000", /卖四/ "sellFourPri":"8.41", /卖四报价/ "sellFive":"214535", /卖五/ "sellFivePri":"15.21", /卖五报价/ "date":"2012-12-11", /日期/ "time":"15:03:06", /时间/ }, "dapandata":{/大盘数据可通过字段 type 单独查询/ }, "gopicture":{

"minurl":"http://image.sinajs.cn/newchart/min/n/sh601009.gif",/*分时 K 线图*/
    "dayurl":"http://image.sinajs.cn/newchart/daily/n/sh601009.gif",/*日 K 线图*/
    "weekurl":"http://image.sinajs.cn/newchart/weekly/n/sh601009.gif",/*周 K 线图*/
    "monthurl":"http://image.sinajs.cn/newchart/monthly/n/sh601009.gif"/*月 K 线图*/
}

}] } ----------------------------------深(上)证指数示例------------------------------------------------------------------ { "error_code": 0 "reason": "SUCCESSED!", "result": { "dealNum": "24388041799",/成交量/ "dealPri": "340674441059.270",/成交额/ "highPri": "10357.417",/最高/ "increPer": "-0.46",/涨跌百分比/ "increase": "-43.756",/涨跌幅/ "lowpri": "10121.741",/最低/ "name": "深证成指",/名称/ "nowpri": "10270.855",/当前价格/ "openPri": "10200.547",/今开/ "time": "2015-09-22 14:45:25",/时间/ "yesPri": "10176.727"/昨收/ }, }

只有“"time":"15:03:06",/时间/”和“"nowPri":"8.37"/当前价格/”,那如果我想得到下一秒的价格,岂不是还要再发一次请求?

即便 api 免费调用,这也太麻烦了吧? 有没有什么其他的办法? 多谢各位。。。

6574 次点击
所在节点    Android
7 条回复
ss098
2016-10-22 15:54:50 +08:00
很难有好的解决办法。

通常 API 接口都是你去主动抓取,很少有提供通知的。
bombless
2016-10-22 16:03:48 +08:00
你自己搞服务端聚合数据呗
callmexiaoliu
2016-10-22 16:06:01 +08:00
@ss098 如果只用这些 api 的话,那就是每一秒都去提请数据了?
对手机 app 来说是很费电费流量的吧?
callmexiaoliu
2016-10-22 16:07:02 +08:00
@bombless 搞一个服务端来取这些数据,再推个 app ?
bombless
2016-10-22 16:10:37 +08:00
des
2016-10-22 16:18:04 +08:00
秒级操作就非得 app 每秒去抓一次,服务器每秒抓一次, app 一次拉一分钟也算是时实了吧?
callmexiaoliu
2016-10-22 16:56:57 +08:00
@des 如果一秒抓取一次的话会不会出现这种情况? 12:00:00 的时候去抓取一次, 12:00:01 的时候也去抓取一次,然而 12:00:00 的返回数据比 01 的那次慢。是不是我想的复杂了?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/314648

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX