长轮询 api 程序不会创建多线程来区分用户
long polling api program doesn't make multi threads to make difference between users
我有一个电报机器人 API 程序使用长轮询 运行 这个机器人 我把这个功能(启用我的电报机器人)放在 Global.asax 并在 Application_Start() 中调用它当我启动项目电报机器人时正常工作直到它有 1 个用户,当第二个用户开始使用机器人时用户第二个用户更新不会创建另一个线程并且它在第一个用户进度之后工作!
例如: 用户 #1 以 "AnswerForm" 发送消息(更新),因此机器人通过第一个条件并等待用户在长轮询中输入表单 ID循环,此时另一个用户启动 bot 并向他发送消息 bot 作为用户 1 Form Id 接收它!我猜这会为他制作另一个线程,但我不知道我不会发生。那么我该如何解决呢?
static async void testApiAsync()
{
try
{
var Bot = new Telegram.Bot.TelegramBotClient("my_token");
var me = await Bot.GetMeAsync();
int offset = 0;
while (true)
{
var updates = await Bot.GetUpdatesAsync(offset);
foreach (var update in updates)
{
offset = update.Id + 1; //new offset id
if (update.Message != null)
{
if (update.Message.Text == "AnswerForm")
{
string askFormId = "send Form Id";
await Bot.SendTextMessageAsync(update.Message.Chat.Id, askFormId);
while (true)
{
//here was my code that
//wait for user to enter Form Id
}
}
}
}
}
}
catch { }
}
我找到问题了!它又深又大!在此 api 中,用户未提交任何内容,并且在服务器中,我没有连续接收线程来验证每个用户!
所以为了解决这个问题,我应该跟踪每个用户使用将他们的会话保存在数据库中,每当他们发送新消息时,我都会按照他们之前所做的去做,让他们做以下事情...
我有一个电报机器人 API 程序使用长轮询 运行 这个机器人 我把这个功能(启用我的电报机器人)放在 Global.asax 并在 Application_Start() 中调用它当我启动项目电报机器人时正常工作直到它有 1 个用户,当第二个用户开始使用机器人时用户第二个用户更新不会创建另一个线程并且它在第一个用户进度之后工作!
例如: 用户 #1 以 "AnswerForm" 发送消息(更新),因此机器人通过第一个条件并等待用户在长轮询中输入表单 ID循环,此时另一个用户启动 bot 并向他发送消息 bot 作为用户 1 Form Id 接收它!我猜这会为他制作另一个线程,但我不知道我不会发生。那么我该如何解决呢?
static async void testApiAsync()
{
try
{
var Bot = new Telegram.Bot.TelegramBotClient("my_token");
var me = await Bot.GetMeAsync();
int offset = 0;
while (true)
{
var updates = await Bot.GetUpdatesAsync(offset);
foreach (var update in updates)
{
offset = update.Id + 1; //new offset id
if (update.Message != null)
{
if (update.Message.Text == "AnswerForm")
{
string askFormId = "send Form Id";
await Bot.SendTextMessageAsync(update.Message.Chat.Id, askFormId);
while (true)
{
//here was my code that
//wait for user to enter Form Id
}
}
}
}
}
}
catch { }
}
我找到问题了!它又深又大!在此 api 中,用户未提交任何内容,并且在服务器中,我没有连续接收线程来验证每个用户!
所以为了解决这个问题,我应该跟踪每个用户使用将他们的会话保存在数据库中,每当他们发送新消息时,我都会按照他们之前所做的去做,让他们做以下事情...