SignalRライブラリで固有の問題に直面しています。私はこのライブラリをオンラインペニーオークションポータルに使用しています。
接続しているすべてのユーザーに入札者名と落札者金額をブロードキャストすると、タイムラグが発生します。
ただし、この同じコードはローカルサーバーでうまく機能します。タイムラグはありません。
私の理解によると、現時点ではデータベースには100のオークションしかなく、すべてのユーザーに最新の入札額とユーザー名をブロードキャストし、接続されたユーザーが更新された最新の入札額を確認できるようにすることは問題ではありません。入札者の名前。
また、これがサーバーで機能することもありますが、ブラウザのタブを変更して(Google Chromeを使用しています)、数秒待つと、このタイムラグが発生します。
var context = new PetaPoco.Database("DataContext");
context.Execute("EXEC udsp_TimerUpdate");
IConnectionManager connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
dynamic clients = connectionManager.GetClients<Chat>();
clients.gettime();
var tmr = context.Query<CurrentBids>(";EXEC udsp_CurrentBidsEndBids;").ToList();
if (tmr != null)
{
foreach (var t in tmr)
{
////Put code here for Shopping Cart
context.Execute(";EXEC udsp_AddToCart @0, @1", t.AuctionId, t.BidderName);
clients.sold("00:00:00", Int32.Parse(t.AuctionId.ToString()), t.BidderName, t.BidAmount);
}
}
var autbid = context.Query<CurrentBids>(";EXEC udsp_CurrentBidsAuto;").ToList();
Random rand = new Random();
foreach (var auct in autbid)
{
var splt = auct.Timer.Split(':');
if (rand.Next(2, int.Parse(splt[2]) + 1) == int.Parse(splt[2]))
{
Chat.AutoBids(auct.AuctionId);
}
}