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

Tavsiye

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çeklenebilirlik 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), 1 Eylül 2024 itibarıyla tüm müşteriler için kullanım dışı bırakılmıştır. Çalışan tüm dağıtımlar Microsoft tarafından durdurulacak ve kapatılacak ve Veriler Ekim 2024'den itibaren kalıcı olarak kaybolacaktı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 öğretici, Azure üzerinde socket.IO tabanlı bir sohbet uygulaması barındırma konusunda size yol gösterir. Socket.IO hakkında daha fazla bilgi için bkz . socket.io.

Aşağıdaki ekran görüntüsünde tamamlanmış uygulama gösterilmektedir:

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

Önkoşullar

Bu makaledeki örneği başarıyla tamamlamak için aşağıdaki ürünlerin 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ıran bulut hizmeti projesini oluşturur.

  1. Başlat Menüsü veya Başlangıç Ekranı'ndan Windows PowerShell'i arayın. Son olarak, Windows PowerShell'e 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. Yeni bir çözüm adı olarak chatapp ve bir çalışan rolü adı olarak WorkerRole1 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'in çı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. Klonla düğmesini kullanarak deponun yerel bir kopyasını oluşturun. Projeyi indirmek için ZIP düğmesini de kullanabilirsiniz.

    ZIP indirme simgesinin vurgulandığı bir tarayıcı penceresi görüntüleniyor https://github.com/LearnBoost/socket.io/tree/master/examples/chat

  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

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

  3. C:\node\chatapp\WorkerRole1 dizininde server.js dosyasını silin ve app.js dosyasını server.js olarak yeniden adlandırın. Bu adım, 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('..//..//lib//socket.io') satırını sio = require('socket.io') olarak aşağıdaki gibi değiştirin:

    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ğıdaki şekilde 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);
    });
    

değişiklikleri server.js 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'de 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 komut, package.json dosyasında listelenen modülleri yükler. Komut tamamlandıktan sonra aşağıdaki ekran görüntüsüne 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 doğrudan göreli yolla Socket.IO kitaplığına başvurduğından, 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
    

    Uyarı

    Öykünücüyü başlatma sırasında 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ılamaz.

    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 adım, 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 daha fazla tarayıcı penceresi açın ve farklı takma adlar girin.

    User1 ve User2'den 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. Örneğin:

    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 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 Azure'a Uygulama Dağıtma bölümüne bakın

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

    Uyarı

    Sağlanan abonelik adının içeri aktarılan yayımlama profilinde 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 Azure'a Uygulama Dağıtma bölümüne bakın

Uygulamanız artık Azure'da çalışıyor ve Socket.IO kullanarak farklı istemciler arasında sohbet iletileri aktarabiliyor.

Uyarı

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 bkz. Node.js GitHub deposu için Azure SDK'sında Service Bus Kuyrukları ve Konu kullanım örnekleri.

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çin Node.js Geliştirici Merkezi'ne de bakın.