当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
1 Star 0 Fork 6

small_fly / data_publish
暂停

forked from 海风 / data_publish
暂停
 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Response.cs 3.05 KB
一键复制 编辑 原始数据 按行查看 历史
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using NetMQ;
using NetMQ.Sockets;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using QueryDBData;
namespace data_publish
{
class Response
{
private string _url;
private QueryDB _qry = null;
public Response(string pUrl, string mongourl)
{
_qry = new QueryDB(mongourl);
_url = pUrl;
}
void Log(string pMsg)
{
Console.WriteLine(DateTime.Now + "\t" + pMsg);
}
public void ResponseData()
{
var rsp = new ResponseSocket();
rsp.Bind($"tcp://{_url}");
DateTime _dataFreshDay = DateTime.Today;
while (true)
{
var str = rsp.ReceiveFrameString(); //取客户请求
try
{
//if(DateTime.Today != _dataFreshDay)
if (DateTime.Now > _dataFreshDay) //20171222:改为一天更新两次(遇到早盘添加品种时无法取到)
{
if (DateTime.Now.TimeOfDay > TimeSpan.Parse("20:30:00"))
_dataFreshDay = DateTime.Today.AddDays(1) + TimeSpan.Parse("08:30:00");
else if (DateTime.Now.TimeOfDay > TimeSpan.Parse("08:30:00"))
_dataFreshDay = DateTime.Today + TimeSpan.Parse("20:30:00");
Console.WriteLine("每日数据更新");
_qry.ResetData(); //每日更新数据
}
var r = JsonConvert.DeserializeObject<ReqPackage>(str);
Log($"received a msg: {r.Type.ToString()},{str}");
object bars = null;
switch (r.Type)
{
case BarType.Min:
bars = _qry.QueryMinBars(r.Instrument, r.Begin, r.End);
break;
case BarType.Day:
bars = _qry.QueryDayBars(r.Instrument, r.Begin, r.End);
break;
case BarType.Real:
bars = _qry.QueryRealBars(r.Instrument);
break;
case BarType.Time:
bars = _qry.ProductWorkingTime.Values.ToList();
break;
case BarType.Product:
bars = _qry.ProductInfo.Values.ToList();
break;
case BarType.InstrumentInfo:
bars = _qry.InstrumentInfo.Values.ToList();
break;
case BarType.TradeDate:
bars = _qry.TradeDate;
break;
case BarType.Instrumet888:
bars = _qry.Instrument888.Values.ToList();
break;
case BarType.Rate000:
bars = _qry.Rate000;
break;
}
using (MemoryStream ms = new MemoryStream())
{
using (GZipStream zipStream = new GZipStream(ms, CompressionMode.Compress))
{
string msg = JsonConvert.SerializeObject(bars);
var bs = Encoding.UTF8.GetBytes(msg);
zipStream.Write(bs, 0, bs.Length);
}
rsp.SendFrame(ms.ToArray()); //放在 zipstream外,否则会有部分数据不写入
}
}
catch (Exception err)
{
Console.WriteLine(err.Message);
//rsp.Unbind($"@tcp://{_url}");
//rsp.Close();
//rsp = new ResponseSocket($"@tcp://{_url}");
rsp.SendFrameEmpty(); //解决读取错误后,不响应就不能再接收的问题
}
}
}
}
}
C#
1
https://gitee.com/small_fly/data_publish.git
git@gitee.com:small_fly/data_publish.git
small_fly
data_publish
data_publish
master

搜索帮助