Azure Cloud Service'te Socket.IO ile Node.js sohbet uygulaması oluşturma (klasik)

İpucu

Socket.IO artık Azure'da yerel olarak desteklenmektedir. Binlerce bağlantıyı işlemek üzere bir Socket.IO uygulamasının ölçeğini genişletmek genellikle sinir bozucudur. Azure artık Socket.IO yerel olarak desteklediğine göre, Azure'ın ölçeklenebilirliği ve kullanılabilirliği işlemesini sağlayabilirsiniz. Birkaç kod satırıyla Azure'da çalışan herhangi bir Socket.IO uygulamasını nasıl edinebileceğiniz hakkında daha fazla bilgi edinin.

Önemli

Cloud Services (klasik) artık yeni müşteriler için kullanımdan kaldırılmıştır ve tüm müşteriler için 31 Ağustos 2024'te kullanımdan kaldırılacaktır. Yeni dağıtımlarda yeni Azure Resource Manager tabanlı dağıtım modeli Azure Cloud Services (genişletilmiş destek) kullanılmalıdır.

Socket.IO, Node.js sunucunuzla istemcileriniz arasında gerçek zamanlı iletişim sağlar. Bu öğreticide yuva barındırma işleminde size yol gösterilir. Azure'da GÇ tabanlı sohbet uygulaması. Socket.IO hakkında daha fazla bilgi için bkz. socket.io.

Tamamlanan uygulamanın ekran görüntüsü aşağıdadır:

! [Azure'da barındırılan hizmeti görüntüleyen bir tarayıcı penceresi] [completed-app]

Önkoşullar

Bu makaledeki örneği başarıyla tamamlamak için aşağıdaki ürün ve sürümlerin yüklendiğinden emin olun:

Bulut Hizmeti Projesi Oluşturma

Aşağıdaki adımlar, Socket.IO uygulamasını barındıracak bulut hizmeti projesini oluşturur.

  1. Başlangıç Menüsü veya Başlangıç Ekranı'ndanWindows PowerShell için arama yapın. Son olarak, Windows PowerShell sağ tıklayın ve Yönetici Olarak Çalıştır'ı seçin.

    Azure PowerShell simgesi

  2. c:\node adlı bir dizin oluşturun.

    PS C:\> md node
    
  3. Dizinleri c:\node dizinine değiştirme

    PS C:\> cd node
    
  4. adlı yeni bir çözüm ve adlı chatappWorkerRole1bir çalışan rolü oluşturmak için aşağıdaki komutları girin:

    PS C:\node> New-AzureServiceProject chatapp
    PS C:\Node> Add-AzureNodeWorkerRole
    

    Aşağıdaki yanıtı görürsünüz:

    new-azureservice ve add-azurenodeworkerrolecmdlets çıkışı

Sohbet Örneğini indirin

Bu proje için [Socket.IO GitHub deposundaki sohbet örneğini kullanacağız. Örneği indirmek ve daha önce oluşturduğunuz projeye eklemek için aşağıdaki adımları gerçekleştirin.

  1. Kopyala düğmesini kullanarak deponun yerel bir kopyasını oluşturun. Projeyi indirmek için ZIP düğmesini de kullanabilirsiniz.

    ZIP indirme simgesinin vurgulandığı, öğesini görüntüleyen https://github.com/LearnBoost/socket.io/tree/master/examples/chatbir tarayıcı penceresi

  2. örnekler\sohbet dizinine ulaşana kadar yerel deponun dizin yapısında gezinin. Bu dizinin içeriğini daha önce oluşturulan C:\node\chatapp\WorkerRole1 dizinine kopyalayın.

    Explorer, arşivden ayıklanan örnekler\sohbet dizininin içeriğini görüntüleme

    Yukarıdaki ekran görüntüsünde vurgulanan öğeler örnekler\sohbet dizininden kopyalanan dosyalardır

  3. C:\node\chatapp\WorkerRole1 dizinindeserver.js dosyasını silin ve app.js dosyasını server.jsolarak yeniden adlandırın. Bu, daha önce Add-AzureNodeWorkerRole cmdlet'i tarafından oluşturulan varsayılan server.js dosyasını kaldırır ve sohbet örneğindeki uygulama dosyasıyla değiştirir.

Server.js Değiştirme ve Modülleri Yükleme

Uygulamayı Azure öykünücüsunda test etmeden önce bazı küçük değişiklikler yapmamız gerekir. server.js dosyasına aşağıdaki adımları uygulayın:

  1. server.js dosyasını Visual Studio'da veya herhangi bir metin düzenleyicisinde açın.

  2. server.js başındaKi Modül bağımlılıkları bölümünü bulun ve sio = require('. ifadesini içeren satırı değiştirin. //.. lib//socket.io') to sio = require('socket.io') aşağıda gösterildiği gibi:

    var express = require('express')
      , stylus = require('stylus')
      , nib = require('nib')
    //, sio = require('..//..//lib//socket.io'); //Original
      , sio = require('socket.io');                //Updated
      var port = process.env.PORT || 3000;         //Updated
    
  3. Uygulamanın doğru bağlantı noktasında dinlediğinden emin olmak için Not Defteri'nde veya sık kullandığınız düzenleyicide server.js açın ve 3000'i aşağıda gösterildiği gibi process.env.port ile değiştirerek aşağıdaki satırı değiştirin:

    //app.listen(3000, function () {            //Original
    app.listen(process.env.port, function () {  //Updated
      var addr = app.address();
      console.log('   app listening on http://' + addr.address + ':' + addr.port);
    });
    

server.jsdeğişiklikleri kaydettikten sonra gerekli modülleri yüklemek için aşağıdaki adımları kullanın ve uygulamayı Azure öykünücüsunda test edin:

  1. Azure PowerShell kullanarak dizinleri C:\node\chatapp\WorkerRole1 dizinine değiştirin ve bu uygulamanın gerektirdiği modülleri yüklemek için aşağıdaki komutu kullanın:

    PS C:\node\chatapp\WorkerRole1> npm install
    

    Bu işlem package.json dosyasında listelenen modülleri yükler. Komut tamamlandıktan sonra aşağıdakine benzer bir çıktı görmeniz gerekir:

    npm install komutunun çıkışı

  2. Bu örnek başlangıçta Socket.IO GitHub deposunun bir parçası olduğundan ve göreli yolla doğrudan Socket.IO kitaplığına başvurduktan sonra package.json dosyasında Socket.IO başvurulamadığından, aşağıdaki komutu vererek yüklememiz gerekir:

    PS C:\node\chatapp\WorkerRole1> npm install socket.io --save
    

Test Ve Dağıtma

  1. Aşağıdaki komutu vererek öykünücüyü başlatın:

    PS C:\node\chatapp\WorkerRole1> Start-AzureEmulator -Launch
    

    Not

    Öykünücüyü başlatırken sorunlarla karşılaşırsanız, örneğin: Start-AzureEmulator: Beklenmeyen bir hata oluştu. Ayrıntılar: Beklenmeyen bir hatayla karşılaşıldı System.ServiceModel.Channels.ServiceChannel iletişim nesnesi, Hatalı durumda olduğundan iletişim için kullanılamıyor.

    AzureAuthoringTools v 2.7.1 ve AzureComputeEmulator v 2.7'yi yeniden yükleyin; sürümün eşleştiğinden emin olun.

  2. Bir tarayıcıyı açın ve http://127.0.0.1 dizinine gidin.

  3. Tarayıcı penceresi açıldığında bir takma ad girin ve Enter tuşuna basın. Bu, iletileri belirli bir takma ad olarak göndermenizi sağlar. Çok kullanıcılı işlevselliği test etmek için aynı URL'yi kullanarak ek tarayıcı pencereleri açın ve farklı takma adlar girin.

    User1 ve User2'den gelen sohbet iletilerini görüntüleyen iki tarayıcı penceresi

  4. Uygulamayı test ettikten sonra, aşağıdaki komutu vererek öykünücüyü durdurun:

    PS C:\node\chatapp\WorkerRole1> Stop-AzureEmulator
    
  5. Uygulamayı Azure'a dağıtmak için Publish-AzureServiceProject cmdlet'ini kullanın. Örnek:

    PS C:\node\chatapp\WorkerRole1> Publish-AzureServiceProject -ServiceName mychatapp -Location "East US" -Launch
    

    Önemli

    Benzersiz bir ad kullandığınızdan emin olun, aksi takdirde yayımlama işlemi başarısız olur. Dağıtım tamamlandıktan sonra tarayıcı açılır ve dağıtılan hizmete gider.

    Sağlanan abonelik adının içeri aktarılan yayımlama profilinde mevcut olmadığını belirten bir hata alırsanız, Azure'a dağıtmadan önce aboneliğinizin yayımlama profilini indirmeniz ve içeri aktarmanız gerekir. Azure Bulut Hizmeti'ne Node.js uygulama oluşturma ve dağıtma bölümünün Uygulamayı Azure'a dağıtma bölümüne bakın

    ! [Azure'da barındırılan hizmeti görüntüleyen bir tarayıcı penceresi] [completed-app]

    Not

    Sağlanan abonelik adının içeri aktarılan yayımlama profilinde mevcut olmadığını belirten bir hata alırsanız, Azure'a dağıtmadan önce aboneliğinizin yayımlama profilini indirmeniz ve içeri aktarmanız gerekir. Azure Bulut Hizmeti'ne Node.js uygulama oluşturma ve dağıtma bölümünün Uygulamayı Azure'a dağıtma bölümüne bakın

Uygulamanız artık Azure'da çalışıyor ve Socket.IO kullanarak sohbet iletilerini farklı istemciler arasında geçiş yapabilir.

Not

Kolaylık olması için bu örnek, aynı örneğe bağlı kullanıcılar arasında sohbet etmekle sınırlıdır. Bu, bulut hizmetinin iki çalışan rolü örneği oluşturması durumunda kullanıcıların yalnızca aynı çalışan rolü örneğine bağlı diğer kişilerle sohbet edebilecekleri anlamına gelir. Uygulamayı birden çok rol örneğiyle çalışacak şekilde ölçeklendirmek için Service Bus gibi bir teknoloji kullanarak Socket.IO depolama durumunu örnekler arasında paylaşabilirsiniz. Örnekler için Node.js GitHub deposu için Azure SDK'daki Service Bus Kuyrukları ve Konu kullanım örneklerine bakın.

Sonraki adımlar

Bu öğreticide, Azure Bulut Hizmeti'nde barındırılan temel bir sohbet uygulaması oluşturmayı öğrendiniz. Bu uygulamayı azure web sitesinde barındırmayı öğrenmek için bkz. Azure Web Sitesinde Socket.IO ile Node.js Sohbet Uygulaması Oluşturma.

Daha fazla bilgi içinNode.js Geliştirici Merkezi'ne de bakın.