Hızlı Başlangıç: Azure İşlevleri ve SignalR Service ile GitHub sayısını gösteren bir Uygulama oluşturmak için Java kullanma
Azure SignalR Hizmeti uygulamanıza kolayca gerçek zamanlı işlevsellik eklemenize olanak sağlar ve Azure İşlevleri, herhangi bir altyapıyı yönetmeden kodunuzu çalıştırmanıza olanak sağlayan sunucusuz bir platformdur. Bu hızlı başlangıçta SignalR Service'i kullanmayı ve java ile Azure İşlevleri istemcilere ileti yayınlamaya uygun sunucusuz bir uygulama derlemeyi öğrenin.
Not
Makalede belirtilen tüm kodları aşağıdaki makaleden GitHub
Önkoşullar
Kod düzenleyicisi, örneğin Visual Studio Code
Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir hesap oluşturun.
Azure Functions Core Tools. Azure İşlevi uygulamalarını yerel olarak çalıştırmak için kullanılır.
Not
Java'da gerekli SignalR Hizmeti bağlamaları yalnızca Azure Function Core Tools sürüm 2.4.419 'da (ana bilgisayar sürümü 2.0.12332) veya üzerinde de destek alır.
Not
Uzantıları yüklemek için Azure Functions Core Tools yükleme .NET Core SDK gerekir. Ancak JavaScript Azure İşlev uygulamaları oluşturmak için .NET bilgisi gerekmemektedir.
Java Developer Kit, sürüm 11
Apache Maven, sürüm 3.0 veya üzeri
Not
Bu hızlı başlangıç; macOS, Windows veya Linux üzerinde çalıştırılabilir.
Sorun mu var? Sorun giderme kılavuzunu deneyin veya bize haber ver.
Azure'da oturum açma
Azure hesabınızla Azure portalında https://portal.azure.com/ sayfasında oturum açın.
Sorun mu var? Sorun giderme kılavuzunu deneyin veya bize haber ver.
Azure SignalR Hizmeti örneği oluşturma
Uygulamanız Azure’da bir SignalR hizmeti örneğine bağlanır.
Azure portalın sol üst köşesinde bulunan Yeni düğmesini seçin. Yeni ekranda arama kutusuna SignalR hizmeti yazın ve Enter tuşuna basın.

Arama sonuçlarından SignalR Hizmeti’ni seçtikten sonra Oluştur’u seçin.
Aşağıdaki ayarları girin.
Ayar Önerilen değer Açıklama Kaynak adı Genel olarak benzersiz bir ad Yeni SignalR Hizmeti örneğinizi tanımlayan ad. Geçerli karakterler: a-z,0-9ve-.Abonelik Aboneliğiniz Yeni SignalR Hizmeti örneğinin oluşturulacağı abonelik. Kaynak Grubu myResourceGroup SignalR Hizmeti örneğinizin oluşturulacağı yeni kaynak grubunun adı. Konum Batı ABD Size yakın bir bölge seçin. Fiyatlandırma katmanı Ücretsiz Azure SignalR Hizmetini ücretsiz deneyin. Birim sayısı Uygulanamaz Birim sayısı, SignalR Hizmeti örneğinizin kaç bağlantı kabul edebileceğini belirtir. Bu yalnızca Standart katmanda yapılandırılabilir. Hizmet modu Sunucusuz Azure Işlevleri veya REST API kullanmak için. 
SignalR Hizmeti örneğini dağıtmaya başlamak için Oluştur’u seçin.
Örnek dağıtıldıktan sonra portalda açın ve ayarlar sayfasını bulun. Azure SignalR hizmetini Azure Işlevleri bağlama veya REST API aracılığıyla kullanıyorsanız, hizmet modu ayarını sunucusuz olarak değiştirin. Aksi halde Klasik veya varsayılan olarak bırakın.
Sorun mu var? Sorun giderme kılavuzunu deneyin veya bize haber ver.
Azure İşlev Uygulamasını yapılandırıp çalıştırma
Azure Function Core Tools, java (örnekte sürüm 11) ve maven'in yüklü olduğundan emin olun.
mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=11Maven, proje oluşturma işini tamamlamak için gereken değerleri sorar. Aşağıdaki değerleri sebilirsiniz.
İstem Değer Açıklama groupId com.signalrJava için paket adlandırma kurallarına uygun olarak projenizi tüm projelerde benzersiz şekilde tanımlayan bir değer. Artifactıd javaSürüm numarası olmadan jar'ın adı olan bir değer. Sürüm 1.0-SNAPSHOTVarsayılan değeri seçin. Paket com.signalrOluşturulan işlev kodu için Java paketi olan bir değer. Varsayılan değeri kullanın. Bir projeyi başlatıldıktan sonra. klasörüne gidin
src/main/java/com/signalrve aşağıdaki kodlarıFunction.javapackage com.signalr; import com.google.gson.Gson; import com.microsoft.azure.functions.ExecutionContext; import com.microsoft.azure.functions.HttpMethod; import com.microsoft.azure.functions.HttpRequestMessage; import com.microsoft.azure.functions.HttpResponseMessage; import com.microsoft.azure.functions.HttpStatus; import com.microsoft.azure.functions.annotation.AuthorizationLevel; import com.microsoft.azure.functions.annotation.FunctionName; import com.microsoft.azure.functions.annotation.HttpTrigger; import com.microsoft.azure.functions.annotation.TimerTrigger; import com.microsoft.azure.functions.signalr.*; import com.microsoft.azure.functions.signalr.annotation.*; import org.apache.commons.io.IOUtils; import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.http.HttpResponse.BodyHandlers; import java.nio.charset.StandardCharsets; import java.util.Optional; public class Function { @FunctionName("index") public HttpResponseMessage run( @HttpTrigger( name = "req", methods = {HttpMethod.GET}, authLevel = AuthorizationLevel.ANONYMOUS)HttpRequestMessage<Optional<String>> request, final ExecutionContext context) throws IOException { InputStream inputStream = getClass().getClassLoader().getResourceAsStream("content/index.html"); String text = IOUtils.toString(inputStream, StandardCharsets.UTF_8.name()); return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "text/html").body(text).build(); } @FunctionName("negotiate") public SignalRConnectionInfo negotiate( @HttpTrigger( name = "req", methods = { HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> req, @SignalRConnectionInfoInput( name = "connectionInfo", hubName = "serverless") SignalRConnectionInfo connectionInfo) { return connectionInfo; } @FunctionName("broadcast") @SignalROutput(name = "$return", hubName = "serverless") public SignalRMessage broadcast( @TimerTrigger(name = "timeTrigger", schedule = "*/5 * * * * *") String timerInfo) throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest req = HttpRequest.newBuilder().uri(URI.create("https://api.github.com/repos/azure/azure-signalr")).header("User-Agent", "serverless").build(); HttpResponse<String> res = client.send(req, BodyHandlers.ofString()); Gson gson = new Gson(); GitResult result = gson.fromJson(res.body(), GitResult.class); return new SignalRMessage("newMessage", "Current star count of https://github.com/Azure/azure-signalr is:".concat(result.stargazers_count)); } class GitResult { public String stargazers_count; } }Bazı bağımlılıkların ekleniyor olması gerekir. Bu nedenle,
pom.xml'yi açın ve kodlarda kullanılan bazı bağımlılıkları ekleyin.<dependency> <groupId>com.microsoft.azure.functions</groupId> <artifactId>azure-functions-java-library-signalr</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.7</version> </dependency>Bu örneğin istemci arabirimi bir web sayfasıdır. İşlevde dosyasından HTML içeriğini
content/index.htmlindexokuduğumuz kabul edilir ve dizinde yeni bircontent/index.htmldosyaresourcesoluşturun. Dizin ağacınız şu şekilde olmalıdır.FunctionsProject | - src | | - main | | | - java | | | | - com | | | | | - signalr | | | | | | - Function.java | | | - resources | | | | - content | | | | | - index.html | - pom.xml | - host.json | - local.settings.json'i
index.htmlaçın ve aşağıdaki içeriği kopyalayın.<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>Neredeyse bitti. Son adım, SignalR Hizmeti'nin bağlantı dizesini Azure İşlevi ayarlarına ayarlamaktır.
Azure portalın açık olduğu tarayıcıda portalın üst kısmındaki arama kutusundan adını arayarak önceden dağıttığınız SignalR Hizmeti örneğinin başarılı bir şekilde oluşturulduğundan emin olun. Açmak için örneği seçin.

SignalR Hizmeti örneğinin bağlantı dizelerini görüntülemek için Anahtarlar’ı seçin.

Birincil bağlantı dizesini kopyalayın. Ve aşağıdaki komutu yürütün.
func settings add AzureSignalRConnectionString "<signalr-connection-string>" # Also we need to set AzureWebJobsStorage as Azure Function's requirement func settings add AzureWebJobsStorage "UseDevelopmentStorage=true"
Azure İşlevi'ne yerel olarak çalıştırın:
mvn clean package mvn azure-functions:runAzure İşlevi yerel olarak çalıştır çalıştırktan sonra. Ziyaret etmek için tarayıcınızı
http://localhost:7071/api/indexkullanın; geçerli yıldız sayısını görebilir. Yıldız veya yıldız yıldızlarını GitHub, birkaç saniyede bir yenilenen bir yıldız sayısı elde olur.Not
SignalR bağlaması için Azure Depolama gerekir, ancak İşlev yerel olarak çalıştırılabilirken yerel depolama öykünücüsü kullanabilirsiniz. İndirmeniz ve etkinleştirmeniz
There was an error performing a read operation on the Blob Storage Secret Repository. Please ensure the 'AzureWebJobsStorage' connection string is valid.gerekiyor gibi bir hatayla karşılaştı Depolama Emulator
Sorun mu var? Sorun giderme kılavuzunu deneyin veya bize haber ver.
Kaynakları temizleme
Bu uygulamayı kullanmaya devam etmeyecekseniz, herhangi bir ücret ödememek için aşağıdaki adımları kullanarak bu hızlı başlangıç tarafından oluşturulan tüm kaynakları silin:
Azure portalında, en solda bulunan Kaynak grupları’nı ve ardından oluşturduğunuz kaynak grubunu seçin. Alternatif olarak kaynak grubunu adıyla bulmak için arama kutusunu kullanabilirsiniz.
Açılan pencerede kaynak grubunu seçin ve Kaynak grubunu sil’e tıklayın.
Yeni pencerede, silmek için kaynak grubunun adını yazıp Sil öğesine tıklayın.
Sorun mu var? Sorun giderme kılavuzunu deneyin veya bize haber ver.
Sonraki adımlar
Bu hızlı başlangıçta, yerel olarak gerçek zamanlı bir sunucusuz uygulama yaptı ve bu uygulamayı başlattın. Daha fazla bilgi için SignalR Hizmeti bağlamalarını Azure İşlevleri. Ardından, SignalR Hizmeti ile istemciler ile Azure İşlevi arasında çift yönlü iletişim kurma hakkında daha fazla bilgi edinin.