Results 1 to 7 of 7
  1. #1
    Member
    Join Date
    Aug 2009
    Location
    Binh Duong
    Posts
    14

    Error: Only a client can stream data.

    When I open more than 1 tab in IE(Chrome or Firefox) then only tab can be streaming data. Others tab is not streaming data. Why?

    This is my code in class StockBoardAdapter:

    Code:
    public class StockBoardAdapter : IDataProvider
    {    
        public StructFileManager m_PRSFileStructManager = null;
        private IItemEventListener _listener;
        private volatile string lstStock = "";
        private volatile bool go;
        private volatile int temp = 0;
        private Global _myGlobal = new Global();     
    
        public void Init(IDictionary parameters, string configFile)
        {
        }
    
        public bool IsSnapshotAvailable(string itemName)
        {
            return false;
        }
    
        public void SetListener(IItemEventListener eventListener)
        {
            _listener = eventListener;
        }
    
        public void Subscribe(string itemName)
        {
            itemName = itemName.Trim();
            _myGlobal._myGlobal = itemName.Substring(4);
            
            Thread t = new Thread(new ThreadStart(Run));
            t.Start();        
        }
    
        public void Unsubscribe(string itemName)
        {
            itemName = itemName.Trim();
            _myGlobal._myGlobal = itemName.Substring(4);
            go = false;        
        }
        
        private void SetData(ref IDictionary eventData, Security i)
        {
            //eventData["ma_ck"] = i.StockSymbol;
            Double gia3=(Double.Parse(i.Best3Bid.ToString())/100);
            eventData["gia3"] = gia3.ToString();
            eventData["kl3"] = i.Best3BidVolumn.ToString();
            Double gia2 = (Double.Parse(i.Best2Bid.ToString()) / 100);
            eventData["gia2"] = gia2.ToString();
            eventData["kl2"] = i.Best2BidVolumn.ToString();
            Double gia1 = (Double.Parse(i.Best1Bid.ToString()) / 100);
            eventData["gia1"] = gia1.ToString();
            eventData["kl1"] = i.Best1BidVolumn.ToString();
            Double gia = (Double.Parse(i.Last.ToString()) / 100);
            eventData["gia"] = gia.ToString();
            eventData["kl"] = i.LastVol.ToString();
            eventData["tong_kl"] = i.LastVol.ToString();
            Double gia_1 = (Double.Parse(i.Best1Offer.ToString()) / 100);
            eventData["gia_1"] = gia_1.ToString();
            eventData["kl_1"] = i.Best1OfferVolumn.ToString();
            Double gia_2 = (Double.Parse(i.Best2Offer.ToString()) / 100);
            eventData["gia_2"] = gia_2.ToString();
            eventData["kl_2"] = i.Best2OfferVolumn.ToString();
            Double gia_3 = (Double.Parse(i.Best3Offer.ToString()) / 100);
            eventData["gia_3"] = gia_3.ToString();
            eventData["kl_3"] = i.Best3OfferVolumn.ToString();
        }    
        
        public void Run()
        {
            IDictionary eventData;// = new Hashtable();
            
            go = true;
            
            while (go)
            {       
                eventData = new Hashtable();
                if (lstStock == "" && DataAdapterLauncher.lstSec_All != null)
                {
                    lstStock = DataAdapterLauncher.lstStock;
                    eventData["Items"] = lstStock;
                    _listener.Update("itemMa", eventData, false);
                    Thread.Sleep(10000);
                    foreach (Security i in DataAdapterLauncher.lstSec_All)
                    {
                        if (i.StockType.ToUpper() == "U" || i.StockType.ToUpper() == "S")
                        {
                            eventData = new Hashtable();
                            SetData(ref eventData, i);
                            _listener.Update("item" + i.StockSymbol.ToUpper(), eventData, false);
                            Thread.Sleep(10);
                        }
                    }
                    System.Console.WriteLine("Local_1_" + temp.ToString());
                    temp++;
                }
                else if (DataAdapterLauncher.lstSec_Update != null)
                {
    
                    foreach (Security i in DataAdapterLauncher.lstSec_Update)
                    {
                        if (i.StockType.ToUpper() == "U" || i.StockType.ToUpper() == "S")
                        {
                            eventData = new Hashtable();
                            SetData(ref eventData, i);
                            _listener.Update("item" + i.StockSymbol.ToUpper(), eventData, false);
    
                        }
                    }
                    System.Console.WriteLine("Local_2_" + temp.ToString());
                    temp++;
                }
                System.Console.WriteLine("Global_1_" + temp.ToString());
                temp++;
                Thread.Sleep(1000);
            }
        }  
         
    }
    
    public class Global
    { 
        public string _myGlobal="";
    and i get data from file Security.DAT (Binary file)...

    This is class DataAdapterLauncher:

    Code:
    public class DataAdapterLauncher
    {
        public static List<Security> lstSec_All = null;
        public static List<Security> lstSec_Update = null;
        public static string lstStock = "";
    
        //public static byte[] m_CopiedReadSecurities = null;
        //public static byte[] m_All = null;
        //public static byte[] m_Update = null;
        public static string constDataPathFileName = "DATAPATH.MAP", constDataPathTempFileName = "DATAPATH1.MAP";
    
        public static void Main(string[] args)
        {
            //string host = "125.234.15.210";
            string host = Commons.GetConfigKey("server_add");
            int reqrepPort = 3333;
            int notifPort = 4444;
    
            try
            {
                
                DataProviderServer server = new DataProviderServer();
                server.Adapter = new StockBoardAdapter();
    
                TcpClient reqrepSocket = new TcpClient(host, reqrepPort);
                server.RequestStream = reqrepSocket.GetStream();
                server.ReplyStream = reqrepSocket.GetStream();
    
                TcpClient notifSocket = new TcpClient(host, notifPort);
                server.NotifyStream = notifSocket.GetStream();
    
                server.Start();
                Thread t = new Thread(new ThreadStart(GetData));
                t.Start();
                System.Console.WriteLine("Remote Adapter connected to Lightstreamer Server.");
                System.Console.WriteLine("Ready to publish data...");
            }
            catch (Exception e)
            {
                System.Console.WriteLine("Could not connect to Lightstreamer Server.");
                System.Console.WriteLine("Make sure Lightstreamer Server is started before this Adapter.");
                System.Console.WriteLine(e);
            }
        }
    
        public static void NumOfStock(List<Security> lstSec)
        {        
            foreach (Security i in lstSec)
            {
                if (i.StockType.ToUpper() == "U" || i.StockType.ToUpper() == "S")
                {
                    if (lstStock == "")
                        lstStock += i.StockSymbol.ToUpper();
                    else
                        lstStock +=  "|" + i.StockSymbol.ToUpper();
                }
            }       
        }
    
        public static void GetData()
        {        
            bool l_IsTodays = false;
            string m_PRS_Root_Path = GetConfigKey("PRS_Root"), m_PRS_File_Path = "";
            l_IsTodays = ReadDataPathFile(m_PRS_Root_Path, ref m_PRS_File_Path);        
            byte[] m_CopiedReadSecurities = null;
            byte[] m_All = null;
            byte[] m_Update = null;
            while (true)
            {            
                try
                {     
                    
                    FileInfo l_FileInfo = new FileInfo(m_PRS_File_Path + "\\\\SECURITY.DAT");
                    m_All = ReadFileSpecial(l_FileInfo.FullName, 0, l_FileInfo.Length);
                    lstSec_All = Security.GetSecuritiesEntities(m_All);
                    if (lstStock == "")
                        NumOfStock(lstSec_All);
                    if (m_CopiedReadSecurities==null)
                        m_All = GetUpdatedSecuritiesRecords(l_FileInfo, ref m_CopiedReadSecurities);
                    m_Update = GetUpdatedSecuritiesRecords(l_FileInfo, ref m_CopiedReadSecurities);
                    if (m_Update != null && m_Update.Length>0)
                        lstSec_Update = Security.GetSecuritiesEntities(m_Update);
                    m_All = null;
                    m_Update = null;
                }
                catch
                {
    
                }
                Thread.Sleep(1000);
            }
        }
    
        public static bool ReadDataPathFile(string m_PRS_Root_Path, ref string m_PRS_File_Path)
        {
            //READ DATAPATH.MAP FILE GET ALL DATA INSERT TO HASHTABLE
            string l_StrDATAPATH = "";
            try
            {
                FileStream l_FileStream = new FileStream(m_PRS_Root_Path + "\\" + constDataPathFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
                StreamReader l_StreamReader = new StreamReader(l_FileStream);
                l_StrDATAPATH = l_StreamReader.ReadLine();
                l_StreamReader.Close();
                l_FileStream.Close();
            }
            catch (IOException ex)
            {
                //WriteLog("IO Exception", ex.Message + "\r\n" + ex.StackTrace, Commons.m_excepLog);
            }
    
            Hashtable l_HashTable = new Hashtable();
            int l_StrLen = l_StrDATAPATH.Length;
            int l_Index = 0;
            while (l_Index < l_StrLen)
            {
                string l_StrTemp = l_StrDATAPATH.Substring(l_Index, 18);
                if (l_HashTable.Contains(l_StrTemp.Substring(0, 10)))
                    l_HashTable.Remove(l_StrTemp.Substring(0, 10));
                l_HashTable.Add(l_StrTemp.Substring(0, 10), l_StrTemp.Substring(10));
                l_Index = l_Index + 18;
            }
            string l_StrToDay = DateTime.Now.ToString("dd") + "/" + DateTime.Now.ToString("MM") + "/" + DateTime.Now.ToString("yyyy");
    
            //WriteLog
    
    
            if (l_HashTable.Contains(l_StrToDay))
            {
                m_PRS_File_Path = String.Concat(m_PRS_Root_Path, "\\");
                m_PRS_File_Path = String.Concat(m_PRS_Root_Path, l_HashTable[l_StrToDay].ToString());
                return true;
            }
            else
            {
    
                return false;
            }
        }
    
        public static string GetConfigKey(string key)
        {
            try
            {
                if (key.Trim() != "" || ConfigurationManager.AppSettings[key.Trim()] != null)
                    return ConfigurationManager.AppSettings[key.Trim()].ToString();
                else
                    return key.Trim();
            }
            catch (Exception ex)
            {
    
                return key;
            }
        }
    
        public static byte[] GetUpdatedSecuritiesRecords(FileInfo pFileInfo,ref byte[] m_CopiedReadSecurities)
        {
            try
            {
                byte[] l_Ret = null;
                byte[] l_NewSecurity = null;
                l_NewSecurity = ReadFileSpecial(pFileInfo.FullName, 0, pFileInfo.Length);
                int l_RecLen = Security.constSTC_RECORD_LENGTH;
                int l_Len = 0;
                if (l_NewSecurity != null)
                    l_Len = l_NewSecurity.Length;
                if (m_CopiedReadSecurities != null && l_Len > 0)
                {
                    int[] l_RecIdx = new int[l_Len / l_RecLen];   // Array of record indexes of those are actually changed
                    int l_NumChangedRecs = 0;
                    // Find indexes of records that are actually changed
                    for (int i = 0; i < l_Len; i++)
                    {
                        if (m_CopiedReadSecurities[i] != l_NewSecurity[i])
                        {
                            l_RecIdx[l_NumChangedRecs] = i / l_RecLen;
                            i = ((l_RecIdx[l_NumChangedRecs] + 1) * l_RecLen) - 1; // Move up to compare the subsequent record
                            l_NumChangedRecs++;
                        }
                    }
                    // Copy the changed records into the array to be returned
                    l_Ret = new byte[l_NumChangedRecs * l_RecLen];
                    for (int i = 0; i < l_NumChangedRecs; i++)
                    {
                        // Copy record of index RecIdx[i] into the returned array
                        int k = i * l_RecLen;
                        int j = l_RecIdx[i] * l_RecLen;
                        for (int cnt = 0; cnt < l_RecLen; cnt++, k++, j++)
                        {
                            l_Ret[k] = l_NewSecurity[j];
                        }
                    }
                }
                else
                {
                    l_Ret = l_NewSecurity;  // There is no copied of SECURITY.DAT in memory, so just return the whole content
                }
                // Save the content of SECURITY.DAT
                m_CopiedReadSecurities = l_NewSecurity;
                return l_Ret;
            }
            catch (Exception ex)
            {
                Commons.WriteLog("UpdateSecurityRecord", ex.Message + "\r\n" + ex.StackTrace, Commons.m_excepLog);
                return null;
            }
        }
    
        public static byte[] ReadFileSpecial(string pFullFileName, long pStartPos, long pNumBytes)
        {
            try
            {
                return ReadFileAppend(pFullFileName, pStartPos, pNumBytes);
            }
            catch (IOException ioex)
            {
                Commons.WriteLog("ReadSpecialIO", "***** ReadFileSpecial IOException:" + ioex.Message, Commons.m_excepLog);
                return null;
            }
            catch (Exception ex)
            {
                Commons.WriteLog("ReadSpecialEx", "***** ReadFileSpecial IOException:" + ex.Message, Commons.m_excepLog);
                return null;
            }
        }
    
        public static byte[] ReadFileAppend(string p_FileName, long p_StartPos, long p_NumBytes)
        {
            byte[] hByt = new byte[p_NumBytes];
            try
            {
                FileStream l_FileStream = new FileStream(p_FileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
                BinaryReader l_BinaryReader = new BinaryReader(l_FileStream);
                l_FileStream.Seek(p_StartPos, SeekOrigin.Begin);
                l_BinaryReader.Read(hByt, 0, (int)p_NumBytes);
                l_BinaryReader.Close();
                l_FileStream.Close();
                return hByt;
            }
            catch (UnauthorizedAccessException ex)
            {
                Commons.WriteLog("ReadFileAppend_UnauthorizedAccessException", ex.Message, Commons.m_excepLog);
                return null;
            }
            catch (Exception ex)
            {
                Commons.WriteLog("ReadFileAppend", ex.Message, Commons.m_excepLog);
                return null;
            }
        }
    
    }
    and this is index.htm:

    Code:
    <html>
    
    <head>
    	<title>Stock Board with Lightstreamer</title>
    	<link rel="stylesheet" type="text/css" href="css/table.css" />
    	<script language="JavaScript" src="LS/lscommons.js"></script>
    	<script language="JavaScript" src="LS/lspushpage.js"></script>
    	<script src="scriptaculous/prototype.js" type="text/javascript"></script>
    	<script src="scriptaculous/scriptaculous.js?load=slider" type="text/javascript"></script>
    </head>
    
    <body>
    <!--MyCode-->
     <!-- stock table -->
     <table width="766" border="0">  
        <tr>
          <td><a href="http://www.lightstreamer.com" target="_blank">
            <img src="images/logo.gif" alt="LIGHTSTREAMER" hspace="0" border="0" /></a></td>
          <td class="demoTitle">STOCK-LIST DEMO</td>
        </tr>
      </table>
    <div id="dvStatus"></div>
      <br />
      <table border="0">
    	<tr>
    		<td colspan="2" id="hlc" class="note" style="text-align:left;font-weight:bold;">Highlight Color</td>
    	</tr>
    	<tr>
    		<td colspan="2">
    			<div class="slideLine" id="selectColor">
    				<div class="blueCursor" id="selectBlue"> </div>
    				<div class="greenCursor" id="selectGreen"> </div>
    				<div class="redCursor" id="selectRed"> </div>
    			</div>
    		</td>
    	</tr>
       </table>
    	 <form name="myForm"> 
    		<input type="hidden" name="hiddencount" value="1" /> 
    	 </form> 
    	<table><div source="lightstreamer" table="a" item="item0" field="Count" style="display: none"></div></table>
     <table id = "stocks" cellspacing="0" cellpadding="2" width="766" border="0" >
        <tr class="tableTitle">
          <td width="200" style="text-align: left">Ma CK</td>
          <td width="100">Gia 3</td>      
          <td width="100">KL 3</td>
    	  <td width="100">Gia 2</td>      
          <td width="100">KL 2</td>
    	  <td width="100">Gia 1</td>      
          <td width="100">KL 1</td>
          <td width="150">Gia</td>
          <td width="100">KL</td>
          <td width="150">Tong KL</td>
          <td width="100">Gia 1</td>
          <td width="100">KL 1</td>
          <td width="100">Gia 2</td>
          <td width="100">KL 2</td>
          <td width="100">Gia 3</td>
    	  <td width="100">KL 3</td>
    	  <td width="100">Thoi Gian</td>
        </tr>
    
    <script>
    //var schema1 =["Count"];
    var schema =["gia3", "kl3", "gia2", "kl2", "gia1", "kl1", "gia", "kl", "tong_kl", "gia_1", "kl_1", "gia_2", "kl_2", "gia_3", "kl_3","time"];
    	var page1 = ["itemMa"];
    	var schema1=["Items"];
    	var flag = true;
    	var imgUp = '<img src="images/quotes_up.gif" alt="up" width="20" height="8" border="0">';
    	var imgDown = '<img src="images/quotes_down.gif" alt="down" width="20" height="8" border="0">';
    	var doFade = false;
    	var hotColor = "#f29e05";
    	var redColor = "#f8b87a";
    	var greenColor = "lightgreen";
    	var page = new PushPage();
    	page.onEngineCreation = function(engine) {
    		engine.connection.setAdapterName("PROXY_HELLOWORLD");
    		engine.changeStatus("STREAMING");
    	}
    
    	page.bind();
    	page.createEngine("HelloWorldApp", "LS", "SHARE_SESSION");
    	var pushtable = new OverwriteTable(page1, schema1, "MERGE");
    
    	pushtable.onItemUpdate = updateItem1;
    page.onEngineReady = function(lsEngine) {
        lsEngine.onStatusChange = function(newStatus) {        
            ShowStatus(newStatus, page.isMasterPushPage());        
        };
        // take the current engine status into account
        lsEngine.onStatusChange(lsEngine.getStatus());
    };
    page.onEngineLost = function() {
        ShowStatus("WAITING FOR ENGINE...", true);
    };
    	function updateItem1(item,updateInfo) {
    		if (updateInfo.isValueChanged("Items")){ 		    
    		    var ars = updateInfo.getNewValue("Items").split('|');
    			
    		    if(ars != null){
    			    if((parseInt(document.myForm.hiddencount.value) < ars.length)&&(flag)){	
    					var page1Group = new Array(ars.length);				
    				    for(var i = 0;i<=ars.length-parseInt(document.myForm.hiddencount.value);i++){			
    					    addRow('stocks',i, ars[i]);		
    						page1Group[i]="item"+ars[i];
    				    }						    
    				    page = new PushPage();
    				    page.onEngineCreation = function(engine) {
    						engine.connection.setAdapterName("PROXY_HELLOWORLD");
    						engine.changeStatus("STREAMING");						
    					}
    			}			
    			page.bind();			
    			pushtable = new OverwriteTable(page1Group, schema, "MERGE");
    			pushtable.setSnapshotRequired(true);
    			pushtable.setRequestedMaxFrequency(1.0);
    			pushtable.setPushedHtmlEnabled(true);
    			// set highlighting effect when updating a cell
    			pushtable.onChangingValues = function(itemPos, visualUpdateInfo, itemName) {
    				if (visualUpdateInfo != null) {
    				  var cold = (itemPos % 2 == 1) ? "#eeeeee" : "#ddddee";
    				  if(visualUpdateInfo !="#arrow")
    				  visualUpdateInfo.setRowAttribute(hotColor, cold, "backgroundColor");
    				}
    			};
    			pushtable.onItemUpdate = updateItem;		 
    			page.addTable(pushtable, "stocks");
    			flag = false;
    			}
    		}
    	}
    	page.addTable(pushtable, "a");	
    
    		//add row table
    		function addRow(tableID,i,itemID) {
    		
    			var table = document.getElementById(tableID);
    
    			var rowCount = table.rows.length;
    			var row = table.insertRow(rowCount);
    			var suff = (i % 2 == 0) ? "A" : "B";
    			
    			var cell0 = row.insertCell(0);
    			cell0.innerHTML ='<td nowrap style="text-align: left"><a href="#"><img src="images/popup.gif" width="16" height="16" border="0" align="left" hspace="1" alt="Graphic Chart"><div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item'+ itemID +'" field="ma_ck">' + itemID + '</div></a></td>';
    			
    
    			var cell1 = row.insertCell(1);
    			cell1.innerHTML ='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item'+ itemID +'" field="gia3">-</div>';
    
    			var cell2 = row.insertCell(2);
    			cell2.innerHTML ='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="kl3">-</div>';
    			
    			var cell3 = row.insertCell(3);
    			cell3.innerHTML ='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="gia2">-</div>';
    		
    			var cell4 = row.insertCell(4);
    			cell4.innerHTML ='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="kl2">-</div>';
    			
    			var cell5 = row.insertCell(5);
    			cell5.innerHTML ='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="gia1">-</div>';
    			
    			var cell6 = row.insertCell(6);
    			cell6.innerHTML ='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="kl1">-</div>';
    			
    			var cell7 = row.insertCell(7);
    			cell7.innerHTML ='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="gia">-</div>';
    			
    			var cell8 = row.insertCell(8);
    			cell8.innerHTML='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="#kl">-</div>';
    			
    			var cell9 = row.insertCell(9);
    			cell9.innerHTML='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="tong_kl">-</div>';
    			
    			var cell10 = row.insertCell(10);
    			cell10.innerHTML='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="gia_1">-</div>';
    			
    			var cell11 = row.insertCell(11);
    			cell11.innerHTML='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="kl_1">-</div>';
    			
    			var cell12 = row.insertCell(12);
    			cell12.innerHTML='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="gia_2">-</div>';
    			
    			var cell13 = row.insertCell(13);
    			cell13.innerHTML='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="kl_2">-</div>';
    			
    			var cell14 = row.insertCell(14);
    			cell14.innerHTML='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="gia_3">-</div>';
    			
    			var cell15 = row.insertCell(15);
    			cell15.innerHTML='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="kl_3">-</div>';
    			
    			var cell16 = row.insertCell(16);
    			cell16.innerHTML='<div class="stockname'+suff+'" source="lightstreamer" table="stocks" item="item' + itemID + '" field="time">-</div>';
    			
    		}	
    		  ///(Optional) Block Escape Key	
    		  document.onkeydown = checkEscape;
    		  document.onkeypress = checkEscape;
    		  function checkEscape(e) {
    			if(!e) e = event;
    			if(e.keyCode == 27) return false;
    		  }
    		/////////////////////	
    		if (location.search.indexOf("fade=ON") > -1) {
    			doFade = true;
    		}
    		//////////////// Event Handlers for the Stock Table
     
    		function updateItem(item, updateInfo) {
    			if (updateInfo == null) {
    			  return;
    			}
    			// check for a void update, so as to ignore it;
    			// the case is possible when testing the Remote version of the Data Adapter
    			// in bundle with the Robust version of the Proxy Adapter
    			
    			if(updateInfo.isValueChanged("tong_kl")&&(updateInfo.getOldValue("tong_kl")!=null)){
    				var kl = (updateInfo.getNewValue("tong_kl") - updateInfo.getOldValue("tong_kl"));
    				var test = '<div>'+kl.toFixed(2)+'</div>';
    				updateInfo.addField("#kl",test);
    				
    			}
    		  } 
    		  
    			var colValues = new Array();
    			for (var x = 0; x <= 255; x++) {
    				colValues[colValues.length] = x;
    			}
    			 new Control.Slider(['selectRed','selectGreen','selectBlue'],'selectColor',{sliderValue:[242,158,5],range:$R(0,255),step:1,increment:1,values:colValues,
    						onChange:function(v){
    							updateColInd(v);
    						},
    						onSlide:function(v){
    							updateColInd(v);
    						}});
    			
    			document.getElementById("selectColor").style.backgroundColor = hotColor;
    			document.getElementById("hlc").style.color = hotColor;
    			
    			function updateColInd(v) {
    				var colArr = v.toArray();
    				var applyCol = "rgb("+colArr[0]+","+colArr[1]+","+colArr[2]+")";
    				document.getElementById("selectColor").style.backgroundColor = applyCol;
    				document.getElementById("hlc").style.color = applyCol;
    				hotColor = applyCol;
    			}	
    		  
    		  //////////////// Stock Details Popup Management
    
    		  var unique = Math.floor(Math.random() * 1000);
    
    		  function openPopup(row,length) {
    		  var Group = new Array(length);
    		  for(var i = 0;i<=length;i++){
    			Group[i] = "item"+(i+1);
    		  }
    		  
    			var item = Group[row-1];
    			var fadeStr = "";
    			if (doFade) 
    			{
    			  fadeStr = "&fade=ON";
    			}		
    			wdt = window.open("popup.html?item=" + item + fadeStr, "SLDpopup_" + unique + "_" + item, "width=600,height=400,history=0,resizable,status=1,menubar=1");
    			wdt.focus();
    			return false;
    		  }
    function ShowStatus(content){
        document.getElementById('dvStatus').innerHTML = content;
    };
    </script>
     </table>
    </body>
    </html>
    I don't know why only 1 tab have data...

    There are 2 pictures




  2. #2
    Power Member
    Join Date
    Jul 2006
    Location
    Cesano Maderno, Italy
    Posts
    784
    hi,

    the important bits are on the index.html file.
    Do you see any alert on your pages?
    Do you see any javascript error?
    Can you see the control requests for your second tab on the server?
    Is it possible that the problem is just that you don't ask for the snapshot for the table "a"?

  3. #3
    Member
    Join Date
    Aug 2009
    Location
    Binh Duong
    Posts
    14
    I don't see anything...
    But it have control request in server

    This is alert from server when i open new tab.

    Code:
    07.Aug.09 15:33:51,036 < INFO> Serving request: /lightstreamer/create_session.js
    ?LS_phase=8902&LS_polling=true&LS_polling_millis=0&LS_idle_millis=30000&LS_clien
    t_version=4.3&LS_adapter=PROXY_HELLOWORLD& from 127.0.0.1:52048
    07.Aug.09 15:33:51,040 < INFO> Starting new session: Sef925d8a4184e660T3351039 f
    rom 127.0.0.1:52048
    07.Aug.09 15:33:51,066 < INFO> Serving request: /lightstreamer/control.html?LS_s
    ession=Sef925d8a4184e660T3351039&LS_window=1&LS_win_phase=4&LS_op=add&LS_req_pha
    se=61&LS_mode1=MERGE&LS_id1=itemMa&LS_schema1=Items&LS_unique=1 from 127.0.0.1:5
    2048
    07.Aug.09 15:33:51,068 < INFO> Controlling session: Sef925d8a4184e660T3351039 fr
    om 127.0.0.1:52048
    07.Aug.09 15:33:51,087 < INFO> Serving request: /lightstreamer/STREAMING_IN_PROG
    RESS?LS_session=Sef925d8a4184e660T3351039&LS_phase=8903& from 127.0.0.1:52053
    07.Aug.09 15:33:51,088 < INFO> Attaching session: Sef925d8a4184e660T3351039 from
     127.0.0.1:52053
    07.Aug.09 15:33:53,076 < INFO> Serving request: /lightstreamer/control.html?LS_s
    ession=Sef925d8a4184e660T3351039&LS_window=1&LS_win_phase=4&LS_op=add&LS_req_pha
    se=61&LS_mode1=MERGE&LS_id1=itemMa&LS_schema1=Items&LS_unique=2 from 127.0.0.1:5
    2048
    07.Aug.09 15:33:53,078 < INFO> Controlling session: Sef925d8a4184e660T3351039 fr
    om 127.0.0.1:52048

  4. #4
    Power Member
    Join Date
    Jul 2006
    Location
    Cesano Maderno, Italy
    Posts
    784
    what about the snapshot setting?
    If you open the application in a completely different browser instead of opening it in another tab, does it receive data?

  5. #5
    Member
    Join Date
    Aug 2009
    Location
    Binh Duong
    Posts
    14
    what about the snapshot setting?
    If you open the application in a completely different browser instead of opening it in another tab, does it receive data?

    snapshot settings???
    even if I open different browser then it doesn't receive data...same as open new tab.

  6. #6
    Power Member
    Join Date
    Jul 2006
    Location
    Cesano Maderno, Italy
    Posts
    784
    Probably what happens is that the first client that connects receives the snapshot directly from the adapter. Once the item is subscribed the snapshot is handled by the server that does not send it unless you ask for it. If you don't ask the snapshot to the server it will send only the new updates but not the current status.

    to fix your app, where you call



    you should add



    please read the setSnapshotRequired documentation and the General Concepts.pdf file available under the LS_HOME/DOCS-SDKs folder

  7. #7
    Member
    Join Date
    Aug 2009
    Location
    Binh Duong
    Posts
    14
    Thank Mone for your help...I have been fixed this problem.

 

 

Similar Threads

  1. Replies: 1
    Last Post: October 25th, 2010, 12:23 PM
  2. Reconnecting client after error
    By jkrohn in forum Client SDKs
    Replies: 3
    Last Post: September 1st, 2009, 08:48 AM
  3. Error in Data Adapter
    By wwatts in forum Adapter SDKs
    Replies: 1
    Last Post: July 9th, 2009, 08:38 AM
  4. Multiple Adaptors for one stream session
    By EWANG in forum Adapter SDKs
    Replies: 1
    Last Post: April 29th, 2009, 08:38 AM
  5. Client alert with error 120
    By kalski in forum Client SDKs
    Replies: 3
    Last Post: July 31st, 2008, 09:14 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
All times are GMT +1. The time now is 09:34 PM.
Lightstreamer Logo