Fix an issue that pushing may miss messages.
This commit is contained in:
@@ -66,13 +66,21 @@ public class GamesController : Controller
|
||||
await Task.Factory.StartNew(_pusher.PendingClose);
|
||||
while (_pusher.Connected)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
var nextMessages = channel
|
||||
.GetMessagesFrom(lastReadId);
|
||||
|
||||
if (!nextMessages.Any())
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
var messageToPush = nextMessages.MinBy(t => t.Id);
|
||||
await _pusher.SendMessage(messageToPush!.Content);
|
||||
lastReadId = messageToPush.Id;
|
||||
}
|
||||
await blocker.WaitAsync();
|
||||
var nextMessages = channel
|
||||
.GetMessagesFrom(lastReadId)
|
||||
.ToList();
|
||||
var messageToPush = nextMessages.MinBy(t => t.Id);
|
||||
await _pusher.SendMessage(messageToPush!.Content);
|
||||
lastReadId = messageToPush.Id;
|
||||
}
|
||||
}
|
||||
finally
|
||||
@@ -108,7 +116,7 @@ public class GamesController : Controller
|
||||
}
|
||||
|
||||
[Route("games/{id}/pgn")]
|
||||
public IActionResult GetPgn([FromRoute]int id)
|
||||
public IActionResult GetPgn([FromRoute] int id)
|
||||
{
|
||||
var game = _database.GetOrAdd(id);
|
||||
return Ok(game.ToPgn());
|
||||
@@ -116,7 +124,7 @@ public class GamesController : Controller
|
||||
|
||||
[HttpPost]
|
||||
[Route("games/{id}/move/{player}/{move}")]
|
||||
public IActionResult Move([FromRoute]int id, [FromRoute]string player, [FromRoute]string move)
|
||||
public IActionResult Move([FromRoute] int id, [FromRoute] string player, [FromRoute] string move)
|
||||
{
|
||||
var game = _database.GetOrAdd(id);
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user