Я использую обычный сценарий httplistener powershell. Скрипт прослушивает порт 80 и дает ответ.Powershell httplistener обрабатывает несколько запросов одновременно
Теперь я попытался обрабатывать несколько запросов одновременно. Проблема в том, что второй ответ должен ждать, пока скрипт не завершит первый ответ.
Я попытался запустить собственное задание для каждого http-запроса, но я не могу отправить ответ слушателю из PS-Job.
Кто-нибудь знает, как обращаться с параллельными http-запросами в PS?
Вот Сценарий I'm с помощью:
$url = 'http://localhost/'
$listener = New-Object System.Net.HttpListener
$listener.Prefixes.Add($url)
$listener.Start()
Write-Host "Listening at $url..."
while ($listener.IsListening)
{
$context = $listener.GetContext()
$requestUrl = $context.Request.Url
$response = $context.Response
Write-Host ''
Write-Host "> $requestUrl"
$localPath = $requestUrl.LocalPath
$route = $routes.Get_Item($requestUrl.LocalPath)
if ($route -eq $null)
{
$response.StatusCode = 404
}
else
{
$content = & $route
$buffer = [System.Text.Encoding]::UTF8.GetBytes($content)
$response.ContentLength64 = $buffer.Length
$response.OutputStream.Write($buffer, 0, $buffer.Length)
}
$response.Close()
$responseStatus = $response.StatusCode
Write-Host "< $responseStatus"
}
Что такое правильный способ справиться с более чем один запрос в то же время? Спасибо @all!
спасибо. Я попробовал оба примера - но каждый запрос ждет другого в первом начале конвейера ... Я позволю считать сценарий 1 000 000 после отправки ответа (что работает). При подсчете в Трубе 1 я запускаю запрос другим браузером, и он ждет, пока закончится первый канал. Не могли бы вы мне помочь? – Florian
@Florian Где отправляются $ маршруты? –
Привет Кит, $ маршрутов находится в ScriptBlock, как это: $ маршрутов = @ { "/ ола" = {возвращение "
Привет, мир! '} } – Florian