2013-10-10 3 views
2

Я использую обычный сценарий 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!

ответ

0

В рамках одного процесса PowerShell вы можете использовать несколько пробелов (даже пул в пробеле). См. Это blog post для получения подробной информации о том, как это сделать.

+0

спасибо. Я попробовал оба примера - но каждый запрос ждет другого в первом начале конвейера ... Я позволю считать сценарий 1 000 000 после отправки ответа (что работает). При подсчете в Трубе 1 я запускаю запрос другим браузером, и он ждет, пока закончится первый канал. Не могли бы вы мне помочь? – Florian

+0

@Florian Где отправляются $ маршруты? –

+0

Привет Кит, $ маршрутов находится в ScriptBlock, как это: $ маршрутов = @ { "/ ола" = {возвращение " Привет, мир! '} } – Florian

Смежные вопросы