hqchart 1.1.12733 → 1.1.12734
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/jscommon/jschinamapdata.js +3 -0
- package/src/jscommon/umychart.NetworkFilterTest.js +48803 -0
- package/src/jscommon/umychart.aliYunnetwork.js +47 -0
- package/src/jscommon/umychart.complier.js +25402 -0
- package/src/jscommon/umychart.console.js +12 -0
- package/src/jscommon/umychart.deal.js +1452 -0
- package/src/jscommon/umychart.dragdiv.js +48 -0
- package/src/jscommon/umychart.index.data.js +4132 -0
- package/src/jscommon/umychart.js +90740 -0
- package/src/jscommon/umychart.keyboard.js +1659 -0
- package/src/jscommon/umychart.listctrl.js +690 -0
- package/src/jscommon/umychart.mind.js +2203 -0
- package/src/jscommon/umychart.network.js +44 -0
- package/src/jscommon/umychart.news.js +823 -0
- package/src/jscommon/umychart.regressiontest.js +400 -0
- package/src/jscommon/umychart.report.js +5803 -0
- package/src/jscommon/umychart.scrollbar.js +1345 -0
- package/src/jscommon/umychart.stock.js +4218 -0
- package/src/jscommon/umychart.style.js +625 -0
- package/src/jscommon/umychart.testdata.js +150 -0
- package/src/jscommon/umychart.user.js +137 -0
- package/src/jscommon/umychart.version.js +30 -0
- package/src/jscommon/umychart.worker.js +114 -0
- package/src/jscommon/umychart.ws.stock.js +110 -0
- package/src/jscommon/vendor.js +2 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/////////////////////////////////////////////////////////////////////
|
|
2
|
+
// 模拟测试数据
|
|
3
|
+
//
|
|
4
|
+
//
|
|
5
|
+
/////////////////////////////////////////////////////////////////////
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
function HQData() { }
|
|
9
|
+
|
|
10
|
+
HQData.Explain="本地测试数据";
|
|
11
|
+
|
|
12
|
+
HQData.NetworkFilter=function(data, callback)
|
|
13
|
+
{
|
|
14
|
+
console.log(`[HQData::NetworkFilter] ${HQData.Explain}`, data);
|
|
15
|
+
|
|
16
|
+
switch(data.Name)
|
|
17
|
+
{
|
|
18
|
+
case 'MinuteChartContainer::RequestMinuteData': //分时图数据对接
|
|
19
|
+
HQData.RequestMinuteData(data, callback);
|
|
20
|
+
break;
|
|
21
|
+
case "MinuteChartContainer::RequestHistoryMinuteData": //多日分时图
|
|
22
|
+
HQData.RequestMinuteDaysData(data, callback);
|
|
23
|
+
break;
|
|
24
|
+
|
|
25
|
+
case 'KLineChartContainer::RequestHistoryData': //日线全量数据下载
|
|
26
|
+
HQData.RequestHistoryData(data,callback);
|
|
27
|
+
break;
|
|
28
|
+
case 'KLineChartContainer::RequestRealtimeData': //日线实时数据更新
|
|
29
|
+
HQData.RequestRealtimeData(data,callback);
|
|
30
|
+
break;
|
|
31
|
+
case 'KLineChartContainer::RequestFlowCapitalData': //流通股本
|
|
32
|
+
HQData.RequestFlowCapitalData(data,callback);
|
|
33
|
+
break;
|
|
34
|
+
|
|
35
|
+
case 'KLineChartContainer::ReqeustHistoryMinuteData': //分钟全量数据下载
|
|
36
|
+
HQData.RequestHistoryMinuteData(data, callback);
|
|
37
|
+
break;
|
|
38
|
+
case 'KLineChartContainer::RequestMinuteRealtimeData': //分钟增量数据更新
|
|
39
|
+
HQData.RequestMinuteRealtimeData(data,callback);
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
HQData.RequestMinuteData=function(data, callback)
|
|
45
|
+
{
|
|
46
|
+
data.PreventDefault=true;
|
|
47
|
+
var symbol=data.Request.Data.symbol[0]; //请求的股票代码
|
|
48
|
+
var dayCount=data.Request.Data.daycount;
|
|
49
|
+
console.log(`[HQData::RequestMinuteData] Symbol=${symbol}`);
|
|
50
|
+
|
|
51
|
+
var hqchartData=MINUTE_1DAY_DATA;
|
|
52
|
+
hqchartData.stock[0].symbol=symbol;
|
|
53
|
+
hqchartData.stock[0].name=symbol;
|
|
54
|
+
|
|
55
|
+
callback(hqchartData);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
HQData.RequestMinuteDaysData=function(data, callback)
|
|
59
|
+
{
|
|
60
|
+
data.PreventDefault=true;
|
|
61
|
+
var symbol=data.Request.Data.symbol; //请求的股票代码
|
|
62
|
+
var dayCount=data.Request.Data.daycount;
|
|
63
|
+
|
|
64
|
+
console.log(`[HQData::RequestMinuteDaysData] Symbol=${symbol}`);
|
|
65
|
+
|
|
66
|
+
var hqchartData=MINUTE_5DAY_DATA;
|
|
67
|
+
hqchartData.symbol=symbol;
|
|
68
|
+
hqchartData.name=symbol;
|
|
69
|
+
|
|
70
|
+
callback(hqchartData);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
HQData.RequestHistoryData=function(data,callback)
|
|
74
|
+
{
|
|
75
|
+
data.PreventDefault=true;
|
|
76
|
+
var symbol=data.Request.Data.symbol; //请求的股票代码
|
|
77
|
+
|
|
78
|
+
console.log(`[HQData::RequestMinuteDaysData] Symbol=${symbol}`);
|
|
79
|
+
|
|
80
|
+
var hqchartData=KLINE_DAY_DATA;
|
|
81
|
+
hqchartData.symbol=symbol;
|
|
82
|
+
hqchartData.name=symbol;
|
|
83
|
+
|
|
84
|
+
callback(hqchartData);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
HQData.RequestFlowCapitalData=function(data,callback)
|
|
88
|
+
{
|
|
89
|
+
data.PreventDefault=true;
|
|
90
|
+
var symbol=data.Request.Data.symbol; //请求的股票代码
|
|
91
|
+
|
|
92
|
+
console.log(`[HQData::RequestFlowCapitalData] Symbol=${symbol}`);
|
|
93
|
+
|
|
94
|
+
var hqchartData=KLINE_CAPITAL_DATA;
|
|
95
|
+
callback(hqchartData);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
HQData.RequestRealtimeData=function(data,callback)
|
|
99
|
+
{
|
|
100
|
+
data.PreventDefault=true;
|
|
101
|
+
var symbol=data.Request.Data.symbol[0]; //请求的股票代码
|
|
102
|
+
|
|
103
|
+
console.log(`[HQData::RequestRealtimeData] Symbol=${symbol}`);
|
|
104
|
+
|
|
105
|
+
var hqchartData=KLINE_1DAY_DATA;
|
|
106
|
+
hqchartData.stock[0].name=symbol;
|
|
107
|
+
hqchartData.stock[0].symbol=symbol;
|
|
108
|
+
callback(hqchartData);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
HQData.RequestHistoryMinuteData=function(data, callback)
|
|
113
|
+
{
|
|
114
|
+
data.PreventDefault=true;
|
|
115
|
+
var symbol=data.Request.Data.symbol; //请求的股票代码
|
|
116
|
+
|
|
117
|
+
console.log(`[HQData::RequestHistoryMinuteData] Symbol=${symbol}`);
|
|
118
|
+
|
|
119
|
+
var hqchartData=KLINE_MINUTE_DATA;
|
|
120
|
+
hqchartData.name=symbol;
|
|
121
|
+
hqchartData.symbol=symbol;
|
|
122
|
+
callback(hqchartData);
|
|
123
|
+
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
HQData.RequestMinuteRealtimeData=function(data,callback)
|
|
128
|
+
{
|
|
129
|
+
data.PreventDefault=true;
|
|
130
|
+
var symbol=data.Request.Data.symbol[0]; //请求的股票代码
|
|
131
|
+
|
|
132
|
+
console.log(`[HQData::RequestMinuteRealtimeData] Symbol=${symbol}`);
|
|
133
|
+
|
|
134
|
+
var hqchartData=JSON.parse(JSON.stringify(KLINE_1MINUTE_DATA));
|
|
135
|
+
|
|
136
|
+
var kItem=hqchartData.data[0];
|
|
137
|
+
var price=kItem[5];
|
|
138
|
+
var value=Math.ceil(Math.random()*10)/1000*price;
|
|
139
|
+
var bUp=Math.ceil(Math.random()*10)>=5;
|
|
140
|
+
|
|
141
|
+
if (bUp) price+=value;
|
|
142
|
+
else price-=value;
|
|
143
|
+
kItem[5]=price;
|
|
144
|
+
kItem[3]=Math.max(price, kItem[3]);
|
|
145
|
+
kItem[4]=Math.min(price, kItem[4]);
|
|
146
|
+
|
|
147
|
+
hqchartData.name=symbol;
|
|
148
|
+
hqchartData.symbol=symbol;
|
|
149
|
+
callback(hqchartData);
|
|
150
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
//账户信息
|
|
2
|
+
|
|
3
|
+
function ZUser(userid)
|
|
4
|
+
{
|
|
5
|
+
this.SelfStockApiUrl="https://opensource.zealink.com/API/SelfStock";
|
|
6
|
+
this.LogonApiUrl="https://opensource.zealink.com/API/Logon";
|
|
7
|
+
|
|
8
|
+
this.UserID=null;
|
|
9
|
+
this.NickName=null;
|
|
10
|
+
this.LogonCallback;
|
|
11
|
+
|
|
12
|
+
this.SelfStockData; //自选股信息
|
|
13
|
+
this.SelfStockCallback=null;
|
|
14
|
+
|
|
15
|
+
this.IsWechatApp=false; //是否是小程序模式
|
|
16
|
+
|
|
17
|
+
//微信登录
|
|
18
|
+
this.LogonWechat=function(wechartid,nickname,callback)
|
|
19
|
+
{
|
|
20
|
+
this.LogonCallback=callback;
|
|
21
|
+
this.ReqeustLogon(3,wechartid,nickname)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//是否登录了
|
|
25
|
+
this.IsLogon=function()
|
|
26
|
+
{
|
|
27
|
+
return this.UserID!=null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
this.ReqeustLogon=function(logonType,userid, password)
|
|
31
|
+
{
|
|
32
|
+
var self=this;
|
|
33
|
+
|
|
34
|
+
$.ajax({
|
|
35
|
+
url: this.LogonApiUrl,
|
|
36
|
+
data:
|
|
37
|
+
{
|
|
38
|
+
"logontype":logonType,
|
|
39
|
+
"user":userid,
|
|
40
|
+
"password":password,
|
|
41
|
+
"os":"appweb",
|
|
42
|
+
"identifiy":Guid(),
|
|
43
|
+
"ip":"0.0.0.0"
|
|
44
|
+
},
|
|
45
|
+
type:"post",
|
|
46
|
+
dataType: "json",
|
|
47
|
+
async:true,
|
|
48
|
+
success: function (data)
|
|
49
|
+
{
|
|
50
|
+
self.RecvLogonData(data,RECV_DATA_TYPE.LOGON_DATA);
|
|
51
|
+
},
|
|
52
|
+
error:function(request)
|
|
53
|
+
{
|
|
54
|
+
self.RecvError(request,RECV_DATA_TYPE.LOGON_DATA);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
this.RecvLogonData=function(data,dataType)
|
|
60
|
+
{
|
|
61
|
+
if (data.code!=0)
|
|
62
|
+
{
|
|
63
|
+
if (typeof(this.LogonCallback)=="function") this.LogonCallback(this,data.message);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
this.UserID=data.userid;
|
|
68
|
+
this.NickName=data.nickname;
|
|
69
|
+
|
|
70
|
+
if (typeof(this.LogonCallback)=="function") this.LogonCallback(this);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
//更新自选股
|
|
74
|
+
this.UpdateSelfStock=function()
|
|
75
|
+
{
|
|
76
|
+
this.ReqeustSelfStock();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
this.SelfStock=function(callback)
|
|
80
|
+
{
|
|
81
|
+
this.SelfStockCallback=callback;
|
|
82
|
+
this.ReqeustSelfStock();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
this.ReqeustSelfStock=function()
|
|
86
|
+
{
|
|
87
|
+
var self=this;
|
|
88
|
+
|
|
89
|
+
$.ajax({
|
|
90
|
+
url: this.SelfStockApiUrl,
|
|
91
|
+
data:
|
|
92
|
+
{
|
|
93
|
+
"userid":this.UserID,
|
|
94
|
+
},
|
|
95
|
+
type:"post",
|
|
96
|
+
dataType: "json",
|
|
97
|
+
async:true,
|
|
98
|
+
success: function (data)
|
|
99
|
+
{
|
|
100
|
+
self.RecvSelfStockData(data,RECV_DATA_TYPE.SELF_STOCK_DATA);
|
|
101
|
+
},
|
|
102
|
+
error:function(request)
|
|
103
|
+
{
|
|
104
|
+
self.RecvError(request,RECV_DATA_TYPE.SELF_STOCK_DATA);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
this.RecvSelfStockData=function(data,dataType)
|
|
111
|
+
{
|
|
112
|
+
console.log(data);
|
|
113
|
+
|
|
114
|
+
this.SelfStockData=[];
|
|
115
|
+
for(var i in data.selfstock)
|
|
116
|
+
{
|
|
117
|
+
var item= data.selfstock[i];
|
|
118
|
+
var SelfStockItem={ Name:item.name, Data:new Array() };
|
|
119
|
+
for(var j in item.list)
|
|
120
|
+
{
|
|
121
|
+
var stock=item.list[j];
|
|
122
|
+
|
|
123
|
+
SelfStockItem.Data.push({Symbol:stock.symbol, Name:stock.name, date:stock.adddate});
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
this.SelfStockData.push(SelfStockItem);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (typeof(this.SelfStockCallback)=="function") this.SelfStockCallback(this);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
this.RecvError=function(request,dataType)
|
|
133
|
+
{
|
|
134
|
+
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* 版本信息输出
|
|
3
|
+
*
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
var HQCHART_VERSION="1.1.12732";
|
|
9
|
+
|
|
10
|
+
function PrintHQChartVersion()
|
|
11
|
+
{
|
|
12
|
+
var log=
|
|
13
|
+
`*************************************************************************************************************
|
|
14
|
+
*
|
|
15
|
+
* HQChart Ver: ${HQCHART_VERSION}
|
|
16
|
+
*
|
|
17
|
+
* License: Apache License 2.0
|
|
18
|
+
* Source: https://github.com/jones2000/HQChart
|
|
19
|
+
*
|
|
20
|
+
*************************************************************************************************************
|
|
21
|
+
`
|
|
22
|
+
|
|
23
|
+
console.log(log);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
PrintHQChartVersion();
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
// 工作线程计算指标示例
|
|
3
|
+
//
|
|
4
|
+
//
|
|
5
|
+
//////////////////////////////////////////////////////////////////////////////////
|
|
6
|
+
|
|
7
|
+
function HQChartScriptWorker()
|
|
8
|
+
{
|
|
9
|
+
this.Status=0; //0=空闲 1=运行
|
|
10
|
+
this.Create=function()
|
|
11
|
+
{
|
|
12
|
+
addEventListener('message', (obj)=>{ this.OnRecvMessage(obj); });
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
this.NetworkFilter=function(data, callback, indexInfo)
|
|
16
|
+
{
|
|
17
|
+
JSConsole.Complier.Log(`[HQChartScriptWorker::NetworkFilter] [${data.Name}][${data.Explain}] data=`, data);
|
|
18
|
+
//数据下载
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
this.ExecuteScript=function(indexData, message)
|
|
22
|
+
{
|
|
23
|
+
var scriptObj={ };
|
|
24
|
+
|
|
25
|
+
if (indexData.Script)
|
|
26
|
+
{
|
|
27
|
+
scriptObj.Name=indexData.Name;
|
|
28
|
+
scriptObj.ID=indexData.Index;
|
|
29
|
+
scriptObj.Script=indexData.Script;
|
|
30
|
+
}
|
|
31
|
+
else
|
|
32
|
+
{
|
|
33
|
+
if (!indexData.Index) return false;
|
|
34
|
+
var scriptData = new JSIndexScript();
|
|
35
|
+
var finder = scriptData.Get(indexData.Index);
|
|
36
|
+
if (!finder) return false;
|
|
37
|
+
|
|
38
|
+
scriptObj.ID=indexData.Index;
|
|
39
|
+
scriptObj.Name=finder.Name;
|
|
40
|
+
scriptObj.Script=finder.Script;
|
|
41
|
+
scriptObj.Args=finder.Args;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (indexData.Args) scriptObj.Args=indexData.Args;
|
|
45
|
+
if (IFrameSplitOperator.IsBool(message.IsApiPeriod)) scriptObj.IsApiPeriod=message.IsApiPeriod;
|
|
46
|
+
|
|
47
|
+
var indexInfo={ Name:scriptObj.Name, ID:scriptObj.ID, Script:scriptObj.Script, Args:scriptObj.Args, Guid:message.Guid };
|
|
48
|
+
scriptObj.ErrorCallback=(error)=>{ this.OnExecuteError(error, indexInfo, message); };
|
|
49
|
+
scriptObj.FinishCallback=(data, jsExectute)=>{ this.OnExecuteFinish(data, indexInfo, jsExectute, message); };
|
|
50
|
+
scriptObj.NetworkFilter=(data, callback)=>{ this.NetworkFilter(data, callback, indexInfo, message); };
|
|
51
|
+
|
|
52
|
+
JSConsole.Complier.Log('[HQChartScriptWorker::ExecuteScript] scriptObj=',scriptObj);
|
|
53
|
+
|
|
54
|
+
var indexConsole=new ScriptIndexConsole(scriptObj);
|
|
55
|
+
|
|
56
|
+
var hisData=null;
|
|
57
|
+
if (message && message.Data)
|
|
58
|
+
{
|
|
59
|
+
hisData=new ChartData();
|
|
60
|
+
hisData.Data=message.Data;
|
|
61
|
+
hisData.Right=message.Right;
|
|
62
|
+
hisData.Period=message.Period;
|
|
63
|
+
hisData.DataType=message.DataType; //0=日线 1=分钟
|
|
64
|
+
hisData.Symbol=message.symbol;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var stockObj=
|
|
68
|
+
{
|
|
69
|
+
HQDataType:HQ_DATA_TYPE.KLINE_ID,
|
|
70
|
+
Stock: { Symbol:message.Symbol },
|
|
71
|
+
Request: { MaxDataCount: 500, MaxMinuteDayCount:5 },
|
|
72
|
+
Period:message.Period , Right:message.Right,
|
|
73
|
+
Data:hisData
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
if (IFrameSplitOperator.IsNumber(message.HQDataType)) stockObj.HQDataType=message.HQDataType;
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
indexConsole.ExecuteScript(stockObj);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
this.OnRecvMessage=function(message)
|
|
83
|
+
{
|
|
84
|
+
var data=message.data;
|
|
85
|
+
if (!data) return;
|
|
86
|
+
|
|
87
|
+
if (data.ID==JSCHART_WORKER_MESSAGE_ID.EXECUTE_SCRIPT)
|
|
88
|
+
{
|
|
89
|
+
if (!IFrameSplitOperator.IsNonEmptyArray(data.AryIndex)) return;
|
|
90
|
+
|
|
91
|
+
for(var i=0;i<data.AryIndex.length;++i)
|
|
92
|
+
{
|
|
93
|
+
var item=data.AryIndex[i];
|
|
94
|
+
this.Status=1; //执行状态
|
|
95
|
+
this.ExecuteScript(item,data);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
this.Status=0;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
this.OnExecuteFinish=function(data, indexInfo, jsExectute, jobInfo)
|
|
103
|
+
{
|
|
104
|
+
var message={ Data:data, IndexInfo:indexInfo , ID:JSCHART_WORKER_MESSAGE_ID.FINISH_EXECUTE_SCRIPT, JobInfo:jobInfo };
|
|
105
|
+
postMessage(message);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
this.OnExecuteError=function(error, indexInfo, jobData)
|
|
109
|
+
{
|
|
110
|
+
var message={ IndexInfo:indexInfo, ID:JSCHART_WORKER_MESSAGE_ID.ERROR_EXECUTE_SCRIPT, Error:error };
|
|
111
|
+
postMessage(message);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
///////////////////////////////////////////////////////////////
|
|
2
|
+
// Web socket 行情接收类
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
function JSWSStockResource()
|
|
6
|
+
{
|
|
7
|
+
this.Domain = "wss://websocket-test.zealink.com"; //websocket 域名
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
var g_JSWSStockResource = new JSWSStockResource();
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
function JSWSStock()
|
|
14
|
+
{
|
|
15
|
+
this.IsConnect=false; //是否连接
|
|
16
|
+
this.Url=g_JSWSStockResource.Domain+'/WebSocket/StockAll.ashx';
|
|
17
|
+
this.Socket;
|
|
18
|
+
|
|
19
|
+
this.RecvSnapshotDataCallback; //快照数据到达
|
|
20
|
+
this.RecvDetailDataCallback; //分笔数据到达
|
|
21
|
+
this.RecvFlowDataCallback; //资金流数据到达
|
|
22
|
+
|
|
23
|
+
this.Total={Snapshot:0, Detail:0, Flow:0 } //统计一共接收到的数据条数
|
|
24
|
+
|
|
25
|
+
//option: { Callback: {Snapshot:, Detail:, Flow:}}
|
|
26
|
+
this.SetOption=function(option)
|
|
27
|
+
{
|
|
28
|
+
if (!Option) return;
|
|
29
|
+
|
|
30
|
+
if (option.Callback)
|
|
31
|
+
{
|
|
32
|
+
var callback=option.Callback;
|
|
33
|
+
if (callback.Snapshot) this.RecvSnapshotDataCallback=callback.Snapshot;
|
|
34
|
+
if (callback.Detail) this.RecvDetailDataCallback=callback.Detail;
|
|
35
|
+
if (callback.Flow) this.RecvFlowDataCallback=callback.Flow;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
this.Create=function(option)
|
|
40
|
+
{
|
|
41
|
+
this.SetOption(option);
|
|
42
|
+
|
|
43
|
+
this.Socket=new WebSocket(this.Url);
|
|
44
|
+
if (!this.Socket) return false;
|
|
45
|
+
|
|
46
|
+
console.log(`[JSWSStock::Create] connect=${this.Url}`);
|
|
47
|
+
|
|
48
|
+
var self=this;
|
|
49
|
+
this.Socket.onopen=function(e) { self.OnOpen(e); };
|
|
50
|
+
this.Socket.onmessage=function(e) { self.OnMessage(e)} ;
|
|
51
|
+
this.Socket.onclose=function(e) { self.OnClose(e); }
|
|
52
|
+
this.Socket.onerror=function(e) { self.OnError(e); }
|
|
53
|
+
|
|
54
|
+
console.log(`[JSWSStock::Create] readyState=${this.Socket.readyState}`);
|
|
55
|
+
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
this.Close=function()
|
|
60
|
+
{
|
|
61
|
+
if (this.Socket) this.Socket.close();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
this.OnMessage=function(e)
|
|
65
|
+
{
|
|
66
|
+
var message=JSON.parse(e.data);
|
|
67
|
+
if (!message.data || !message.data.data) return;
|
|
68
|
+
var data=message.data.data;
|
|
69
|
+
if (data.length<=0) return;
|
|
70
|
+
|
|
71
|
+
switch(message.id)
|
|
72
|
+
{
|
|
73
|
+
case 20:
|
|
74
|
+
this.Total.Snapshot+=data.length;
|
|
75
|
+
if (this.RecvSnapshotDataCallback) this.RecvSnapshotDataCallback(message.data);
|
|
76
|
+
break;
|
|
77
|
+
case 10:
|
|
78
|
+
this.Total.Detail+=data.length;
|
|
79
|
+
if (this.RecvDetailDataCallback) this.RecvDetailDataCallback(data);
|
|
80
|
+
break;
|
|
81
|
+
case 30:
|
|
82
|
+
this.Total.Flow+=data.length;
|
|
83
|
+
if (this.RecvFlowDataCallback) this.RecvFlowDataCallback(data);
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
this.OnClose=function(e)
|
|
89
|
+
{
|
|
90
|
+
console.log('[JSWSStock::OnClose] e ', e);
|
|
91
|
+
console.log(`[JSWSStock::OnClose] readyState=${this.Socket.readyState}`);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
this.OnOpen=function(e)
|
|
95
|
+
{
|
|
96
|
+
console.log('[JSWSStock::OnOpen] e ', e);
|
|
97
|
+
console.log(`[JSWSStock::OnOpen] readyState=${this.Socket.readyState}`);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
this.OnError=function(e)
|
|
101
|
+
{
|
|
102
|
+
console.log('[JSWSStock::OnOpen] e ', e);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
JSWSStock.SetDomain = function (domain)
|
|
108
|
+
{
|
|
109
|
+
if (domain) g_JSWSStockResource.Domain = domain;
|
|
110
|
+
}
|