首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lightstreamer创建会话

Lightstreamer创建会话
EN

Stack Overflow用户
提问于 2015-10-24 16:32:07
回答 1查看 989关注 0票数 1

我正在尝试使用LightStreamer连接到IG索引流API,并且正在编写本教程base/Network%20Protocol%20Tutorial.pdf

通过执行以下操作,我成功地创建了流会话(第16页4.1 - /lightstreamer/create_session.txt):

代码语言:javascript
复制
public void ConnectToLightStreamer(Credentials credentials)
{
    var LightStreamerRequest = (HttpWebRequest)WebRequest.Create(credentials.LIGHTSTREAMERENDPOINT + "/lightstreamer/create_session.txt");
    LightStreamerRequest.Method = "POST";
    LightStreamerRequest.ContentType = "application/x-www-form-urlencoded";
    LightStreamerRequest.Headers.Add("Cache-Control", "no-cache");

    using (var streamWriter = new StreamWriter(LightStreamerRequest.GetRequestStream()))
    {
        string Body = "LS_user=" + credentials.CLIENTID + "&LS_password=CST-" + credentials.CST + "|XST-" + credentials.SECURITY_TOKEN + "&LS_adapter_set=DEFAULT&LS_polling=true&LS_polling_millis=0&LS_idle_millis=0&LS_report_info=true";

        streamWriter.Write(Body);
        streamWriter.Flush();
        streamWriter.Close();
    }

    var httpResponse = (HttpWebResponse)LightStreamerRequest.GetResponse();
    Stream stream = httpResponse.GetResponseStream();

    using (stream)
    {
        StreamReader reader = new StreamReader(stream, Encoding.UTF8);
        string responseString = reader.ReadToEnd();

        string[] SessionData = responseString.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);

        string[] sessionID = SessionData[1].Split(':');
        credentials.SESSIONID = sessionID[1];

        string[] controlAddress = SessionData[2].Split(':');
        credentials.CONTROLADDRESS = controlAddress[1];

        Console.WriteLine(responseString);
        Console.WriteLine("CONNECTED");
        Console.WriteLine(Environment.NewLine);
        Console.WriteLine(Environment.NewLine);                
    }
}

通过执行以下操作,我成功地绑定了会话(第18/19页、/lightstreamer/ bind _session.txt):

代码语言:javascript
复制
 public void BindSession(Credentials credentials)
{
    var LightStreamerRequest = (HttpWebRequest)WebRequest.Create(credentials.LIGHTSTREAMERENDPOINT + "/lightstreamer/bind_session.txt");
    LightStreamerRequest.Method = "POST";
    LightStreamerRequest.ContentType = "application/x-www-form-urlencoded";
    LightStreamerRequest.Headers.Add("Cache-Control", "no-cache");

    using (var streamWriter = new StreamWriter(LightStreamerRequest.GetRequestStream()))
    {

        string Body = "LS_user=" + credentials.CLIENTID + "&LS_session=" + credentials.SESSIONID + "&LS_password=CST-" + credentials.CST + "|XST-" + credentials.SECURITY_TOKEN + "&LS_adapter_set=DEFAULT&LS_polling=true&LS_polling_millis=0&LS_idle_millis=0&LS_report_info=true&LS_polling_millis=1000";

        streamWriter.Write(Body);
        streamWriter.Flush();
        streamWriter.Close();
    }

    var httpResponse = (HttpWebResponse)LightStreamerRequest.GetResponse();
    Stream stream = httpResponse.GetResponseStream();

    using (stream)
    {
        StreamReader reader = new StreamReader(stream, Encoding.UTF8);

        string responseString = reader.ReadToEnd();

        Console.WriteLine("BIND: " + responseString);
    }
}

我的问题是,我正在创建一个会话,并计算出我应该发送哪些信息以及如何发送。第20/21页/光流/Control.txt。

我有以下几点,但我知道这是错误的,因为我没有得到任何回应:

代码语言:javascript
复制
public void ControlStreamer(Credentials credentials)
{
    var LightStreamerRequest = (HttpWebRequest)WebRequest.Create(credentials.LIGHTSTREAMERENDPOINT + "/lightstreamer/control.txt");
    LightStreamerRequest.Method = "POST";
    LightStreamerRequest.ContentType = "application/x-www-form-urlencoded";
    LightStreamerRequest.Headers.Add("Cache-Control", "no-cache");

    using (var streamWriter = new StreamWriter(LightStreamerRequest.GetRequestStream()))
    {

        string Body = "LS_user=" + credentials.CLIENTID + "&LS_password=CST-" + credentials.CST + "|XST-" + credentials.SECURITY_TOKEN + "&LS_session=" + credentials.SESSIONID + "&LS_polling=true&LS_polling_millis=0&LS_idle_millis=0&LS_report_info=true&LS_polling_millis=1000&LS_table=" + credentials.SESSIONID + "&LS_op=add&LS_schema=MARKET:IX.D.DOW.DAILY.IP&LS_id=1&LS_mode=MERGE";

        streamWriter.Write(Body);
        streamWriter.Flush();
        streamWriter.Close();
    }

    var httpResponse = (HttpWebResponse)LightStreamerRequest.GetResponse();
    Stream stream = httpResponse.GetResponseStream();

    using (stream)
    {
        StreamReader reader = new StreamReader(stream, Encoding.UTF8);

        string responseString = reader.ReadToEnd();

        Console.WriteLine("CONTROL: " + responseString);
    }
}

我已经全职开发了一年左右,这个项目是在我的极限和理解的边缘。

我已经做了两天以上的这个项目,但几乎无法理解的文件。

如果有人能向我解释我做错了什么,或者向我指出一个可行的例子,我将非常感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-25 18:31:31

如果您的应用程序是基于C#的,则不需要自己实现协议,但如果使用现成的客户端库则要好得多。它为您提供了更高层次的抽象,并且它更健壮,测试也更好。

您可以下载客户端库,并从https://labs.ig.com/lightstreamer-downloads访问完整的文档和示例。

您提到的网络协议教程只有在您需要开发基于任何可用Lightstreamer客户程序库未涵盖的技术的应用程序时才会很有用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33320548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档