实时行情数据源接口websocket接入方法

首先获取以下产品的代码:

  • 外汇
  • 国际期货
  • 国际期货
  • 国内期货
  • 国际金银
  • 数字货币
  • 股指期货 

取到产品代码后,websocket就可以连接了。 将产品代码推送到连接的服务器,服务器会实时推送最新的行情数据

产品代码 :

  • 恒指期货 HSI
  • 德指期货 DAX
  • 英镑美元 fx_sgbpusd
  • 欧元美元 fx_seurusd 

后面的币种就是产品代码,用这个代码进行订阅产品,多个产品代码使用应为逗号隔开。

一、数据解析 

服务器实时推送的行情数据为以下格式:

{
    "body":
	{
        "StockCode":"hf_LHC",
        "Price":108.33,
        "Open":108.65,
        "LastClose":108.7,
        "High":108.825,
        "Low":108.15,
        "Time":"2021-04-0922:36:50",
        "LastTime":1617979010,
        "BP1":108.325,
        "BV1":"27",
        "SP1":108.375,
        "SV1":"5",
        "TotalVol":"108136.000",
        "Diff":-0.37,
        "DiffRate":-0.34
    }
}

| StockCode | 产品代码 |
| Price 	| 最新价 |
| Open  	| 开盘价 |
| LastClose | 昨日收盘价 |
| High  	| 最高价 |
| Low   	| 最低价 |
| Time  	| 更新时间 |
| LastTime  | 更新时间戳 |
| BP1   	| 买价 |
| BV1   	| 买量 |
| SP1   	| 卖价 |
| SV1   	| 卖量 |
| TotalVol  | 成交量 |
| DiffRate  | 涨跌幅 |
| Diff  	| 涨跌额 |

 二、连接Websocket获取实时推送数据

以下是JavaScript的连接demo,可以参考下。同时也支持其他后端语言的连接,PHP、Java等。

1: new WebSocket('ws://39.107.99.235/ws'); 将里面的地址,换成真实的连接地址

2: ws.onopen 当服务连接成功后,会调用该方法。连接成功后,将订阅的产品代码,以json的形式发送到服务器

3:ws.onmessage 服务器推送消息时,会调用该方法。这个里面可以处理,服务器推送过来的数据

4:ws.onclose 服务断开时会调用此方法,这里可以实现重连机制

5:ws.onerror 服务连接失败,会调用此方法。可以做一些其他业务操作

function sendMessage() {
        var ws = new WebSocket('ws://39.107.99.235/ws');
        ws.onopen = function () {
            var send = {
                event: ')(*&^&*()',
                Key: 'btcusdt,ethusdt,xrpusdt'   //指定产品代码,多个使用英文逗号隔开
            };

            ws.send(JSON.stringify(send));

            ws.onmessage = function (ev) {
                data = JSON.parse(ev.data);
                body = data.body;   //该body为推送的数据
               
               console.log(body);   //打印数据
            };
            ws.onclose = function (ev) {
            };
            ws.onerror = function (ev) {
            };
        };
    }
    
    sendMessage();

 三、使用php获取K线数据接口

<?php

$baseUrl  = 'http://39.107.99.235:1008/redis.php';
$code = 'btcusdt';  //获取比特币的k线      产品代码
$time = '1m';       //获取1分钟的k线。     time: 时间格式, 1m 5m 15m 30m 1h 1d 1M
$rows = 200;        //获取近期200条数据    获取条数

$url = $baseUrl."?code={$code}&time={$time}&rows={$rows}";

//请求K线图数据
$data = http_request($url);

//打印K线图数据
var_dump($data);

//返回数据格式
//[
//    [
//        1623061860000,
//        36500,
//        36540.08,
//        36500,
//        36510.65,
//        "2021-06-07 18:31:00",
//        100
//    ],
//    [
//        1623061860000,
//        36500,
//        36540.08,
//        36500,
//        36510.65,
//        "2021-06-07 18:30:00",
//        100
//    ]
//]


/**
 * CURL 请求
 * @date   2021-10-19 10:52
 * @param      $URI
 * @param bool $isHearder
 * @param bool $post
 * @return mixed
 */
function http_request($URI, $isHearder = false, $post = false)
{
    $header = [
        'Accept-Encoding: gzip',
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $URI);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);          //单位 秒,也可以使用
    //curl_setopt($ch, CURLOPT_NOSIGNAL, 1);     //注意,毫秒超时一定要设置这个
    //curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000); //超时毫秒,cURL 7.16.2中被加入。从PHP 5.2.3起可使用
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_HEADER, $isHearder);
    curl_setopt($ch, CURLOPT_ENCODING, "gzip");
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36');
    if (strpos($URI, 'https') === 0) {
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    }
    if ($post) {
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    }
    $result = curl_exec($ch);
    curl_close($ch);

    return $result;
}

 ## 以上就是数据对接过程,有不懂的可以留言!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值