rychlý start: vytvoření aplikace zobrazující GitHub počtu hvězdiček pomocí Azure Functions a služby signalizace pomocí pythonu
Služba Azure SignalR Service umožňuje snadné přidávání funkcí v reálném čase do aplikací. Řešení Azure Functions představuje bezserverovou platformu, která umožňuje spouštět kód, aniž byste museli spravovat nějakou infrastrukturu. V tomto rychlém startu se dozvíte, jak pomocí služby Signal a Azure Functions vytvořit aplikaci bez serveru s Pythonem pro vysílání zpráv klientům.
Poznámka
Všechny kódy, které jsou uvedené v článku, můžete získat z GitHub
Požadavky
Toto Rychlé zprovoznění je možné spustit v systémech macOS, Windows nebo Linux.
Budete potřebovat nainstalovaný editor kódu, jako je třeba Visual Studio Code.
Pokud chcete spouštět aplikace funkcí v Pythonu pro Azure místně, nainstalujte Azure Functions Core Tools (verze 2.7.1505 nebo novější).
Azure Functions vyžaduje Python 3.6 +. (Viz podporované verze Pythonu)
Pokud ještě nemáte předplatné Azure,vytvořte si bezplatný účet před tím, než začnete.
Máte problémy? Vyzkoušejte si příručku pro odstraňování potíží nebo dejte námprosím o tom.
Přihlaste se k Azure.
Přihlaste se k webu Azure Portal na adrese https://portal.azure.com/ pomocí svého účtu Azure.
Máte problémy? Vyzkoušejte si příručku pro odstraňování potíží nebo dejte námprosím o tom.
Vytvoření instance služby Azure SignalR Service
Vaše aplikace se připojí k instanci služby SignalR Service v Azure.
Vyberte tlačítko Nový v levém horním rohu portálu Azure Portal. Do vyhledávacího pole na obrazovce Nový zadejte SignalR Service a stiskněte klávesu Enter.

Ve výsledcích hledání vyberte SignalR Service a pak vyberte Vytvořit.
Zadejte následující nastavení.
Nastavení Navrhovaná hodnota Popis Název prostředku Globálně jedinečný název Název, který identifikuje novou instanci služby SignalR Service. Platné znaky jsou a-z,0-9a-.Předplatné Vaše předplatné Předplatné, ve kterém se nová instance služby SignalR Service vytvoří. Skupina prostředků myResourceGroup Název nové skupiny prostředků, ve které se má instance služby SignalR Service vytvořit. Umístění USA – západ Vyberte oblast , která je blízko vás. Cenová úroveň Free Vyzkoušejte si službu Azure SignalR Service zdarma. Počet jednotek Neuvedeno Počet jednotek určuje, kolik připojení může instance služby SignalR Service přijmout. To lze nakonfigurovat jen na úrovni Standard. Režim služby Bez serveru Pro použití s Azure Functions nebo REST API. 
Pokud chcete začít nasazovat instanci služby SignalR Service, vyberte Vytvořit.
Po nasazení instance ho otevřete na portálu a najděte jeho stránku nastavení. Nastavte režim služby na možnost bez serveru jenom v případě, že používáte službu Azure Signal service prostřednictvím Azure Functions vazby nebo REST API. V opačném případě je ponechte v klasickém nebo výchozím nastavení .
Máte problémy? Vyzkoušejte si příručku pro odstraňování potíží nebo dejte námprosím o tom.
Nastavení a spuštění funkce Azure místně
Ujistěte se, že máte nainstalované nástroje Azure Function Core. A vytvořte prázdný adresář a přejděte do adresáře pomocí příkazového řádku.
# Initialize a function project func init --worker-runtime pythonPo inicializaci projektu je nutné vytvořit funkce. V této ukázce musíme vytvořit 3 funkce.
Spuštěním následujícího příkazu vytvořte
indexfunkci, která bude hostovat webovou stránku pro klienta.func new -n index -t HttpTriggerOtevřete
index/function.jsona zkopírujte následující kódy JSON:{ "bindings": [ { "authLevel": "anonymous", "type": "httpTrigger", "direction": "in", "name": "req", "methods": [ "get", "post" ] }, { "type": "http", "direction": "out", "name": "res" } ] }Otevřete
index/__init__.pya zkopírujte následující kódy.import os import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: f = open(os.path.dirname(os.path.realpath(__file__)) + '/../content/index.html') return func.HttpResponse(f.read(), mimetype='text/html')Vytvořte
negotiatefunkci pro klienty pro získání přístupového tokenu.func new -n negotiate -t SignalRNegotiateHTTPTriggerOtevřete
negotiate/function.jsona zkopírujte následující kódy JSON:{ "scriptFile": "__init__.py", "bindings": [ { "authLevel": "anonymous", "type": "httpTrigger", "direction": "in", "name": "req", "methods": [ "post" ] }, { "type": "http", "direction": "out", "name": "$return" }, { "type": "signalRConnectionInfo", "name": "connectionInfo", "hubName": "serverless", "connectionStringSetting": "AzureSignalRConnectionString", "direction": "in" } ] }A pak otevřete
negotiate/__init__.pya zkopírujte následující kódy:import azure.functions as func def main(req: func.HttpRequest, connectionInfo) -> func.HttpResponse: return func.HttpResponse(connectionInfo)Vytvořte
broadcastfunkci pro vysílání zpráv všem klientům. V ukázce používáme časový Trigger k pravidelnému vysílání zpráv.func new -n broadcast -t TimerTrigger # install requests pip install requestsOtevřete
broadcast/function.jsona zkopírujte následující kódy.{ "scriptFile": "__init__.py", "bindings": [ { "name": "myTimer", "type": "timerTrigger", "direction": "in", "schedule": "*/5 * * * * *" }, { "type": "signalR", "name": "signalRMessages", "hubName": "serverless", "connectionStringSetting": "AzureSignalRConnectionString", "direction": "out" } ] }Otevřete
broadcast/__init__.pya zkopírujte následující kódy.import requests import json import azure.functions as func def main(myTimer: func.TimerRequest, signalRMessages: func.Out[str]) -> None: headers = {'User-Agent': 'serverless'} res = requests.get('https://api.github.com/repos/azure/azure-signalr', headers=headers) jres = res.json() signalRMessages.set(json.dumps({ 'target': 'newMessage', 'arguments': [ 'Current star count of https://github.com/Azure/azure-signalr is: ' + str(jres['stargazers_count']) ] }))
Rozhraní klienta této ukázky je webová stránka. V případě, že přečetli jsme obsah HTML z
content/index.htmlindexfunkce ve funkci, vytvořte nový souborindex.htmlvcontentadresáři pod kořenovou složkou projektu. A zkopírujte následující obsah.<html> <body> <h1>Azure SignalR Serverless Sample</h1> <div id="messages"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/3.1.7/signalr.min.js"></script> <script> let messages = document.querySelector('#messages'); const apiBaseUrl = window.location.origin; const connection = new signalR.HubConnectionBuilder() .withUrl(apiBaseUrl + '/api') .configureLogging(signalR.LogLevel.Information) .build(); connection.on('newMessage', (message) => { document.getElementById("messages").innerHTML = message; }); connection.start() .catch(console.error); </script> </body> </html>Teď je skoro hotové. Posledním krokem je nastavení připojovacího řetězce pro službu signalizace na nastavení funkce Azure.
V prohlížeči, ve kterém máte otevřený Azure Portal, si ověřte, že se úspěšně vytvořila instance služby SignalR Service, kterou jste nasadili dříve. Vyhledejte její název pomocí vyhledávacího pole v horní části stránky portálu. Instanci vyberte a otevřete.

Výběrem možnosti Klíče zobrazte připojovací řetězce instance služby SignalR.

Zkopírujte primární připojovací řetězec. A spusťte následující příkaz.
func settings add AzureSignalRConnectionString "<signalr-connection-string>"
Spusťte funkci Azure Functions v místním prostředí:
func startFunkce Azure Functions se spouští místně. Pomocí prohlížeče můžete navštívit
http://localhost:7071/api/indexa zobrazit aktuální počet hvězdiček. a pokud v GitHub hvězdičku nebo nestarou, obdržíte každých pár sekund aktualizaci počtu hvězdiček.Poznámka
vazba signálu vyžaduje Azure Storage, ale můžete použít emulátor místního úložiště, pokud je funkce spuštěná místně. pokud máte nějakou chybu, například
There was an error performing a read operation on the Blob Storage Secret Repository. Please ensure the 'AzureWebJobsStorage' connection string is valid.potřebujete stáhnout a povolit Storage Emulator
Vyčištění prostředků
Pokud nebudete tuto aplikace nadále používat, odstraňte na základě následujícího postupu všechny prostředky vytvořené podle tohoto rychlého startu, aby se vám neúčtovaly žádné poplatky:
Úplně nalevo na webu Azure Portal vyberte Skupiny prostředků a pak vyberte skupinu prostředků, kterou jste vytvořili. Případně můžete použít vyhledávací pole a skupinu prostředků vyhledat podle jejího názvu.
V okně, které se otevře, vyberte příslušnou skupinu prostředků a pak klikněte na Odstranit skupinu prostředků.
V novém okně zadejte název skupiny prostředků, kterou chcete odstranit, a pak klikněte na Odstranit.
Máte problémy? Vyzkoušejte si příručku pro odstraňování potíží nebo dejte námprosím o tom.
Další kroky
V tomto rychlém startu jste vytvořili a spustili aplikaci bez serveru v reálném čase v místním prostředí. Přečtěte si další informace o použití vazeb služby Signal pro Azure Functions. V dalším kroku se dozvíte, jak obousměrnou komunikaci mezi klienty a službou Azure Functions s využitím služby Signal.