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:
- Visual Studio'yu yükleme
- Node.js yükleme
- Python sürüm 2.7.10'u yükleme
Bulut Hizmeti Projesi Oluşturma
Aşağıdaki adımlar, Socket.IO uygulamasını barındıracak bulut hizmeti projesini oluşturur.
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.
c:\node adlı bir dizin oluşturun.
PS C:\> md node
Dizinleri c:\node dizinine değiştirme
PS C:\> cd node
adlı yeni bir çözüm ve adlı
chatapp
WorkerRole1
bir ç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:
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.
Kopyala düğmesini kullanarak deponun yerel bir kopyasını oluşturun. Projeyi indirmek için ZIP düğmesini de kullanabilirsiniz.
ö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.
Yukarıdaki ekran görüntüsünde vurgulanan öğeler örnekler\sohbet dizininden kopyalanan dosyalardır
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:
server.js dosyasını Visual Studio'da veya herhangi bir metin düzenleyicisinde açın.
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
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:
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:
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
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.
Bir tarayıcıyı açın ve
http://127.0.0.1
dizinine gidin.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.
Uygulamayı test ettikten sonra, aşağıdaki komutu vererek öykünücüyü durdurun:
PS C:\node\chatapp\WorkerRole1> Stop-AzureEmulator
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.