Sunucu Taraflı JavaScript ile Gerçek Zamanlı Web Uygulamaları Geliştirme Emrah Ayanoğlu, Onur Özcan, Alperen Eraslan Inet-TR 12 8 Kasım 2012
İÇERİK 1
Node.js nedir? Google tarafından Chrome un JavaScript motoru için geliştirilmiş olan V8 motoru sayesinde, oldukça hızlı, ölçeklenebilir network ve web uygulamaları geliştirmek için yapılmıştır. Olaya dayalı, deblokaj I/O modeli ile, oldukça hafif ve verimli network uygulamaları ve gerçek zamanlı dağıtımlı uygulamalar için vazgeçilmez bir plaformdur. Ve tabiki tamamen Javascript programlama ortamı Referanslar; Linkedin, Yahoo, Uber, Microsoft, E-bay, Game Salad 2
Node.js nedir? Üzerinde geliştirilen, I/O işlemleri, Database işlemleri, Parsing(XML, JSON, vb) işlemleri, HTTP/HTTPS sunucu ve istemci işlemleri, gibi işlemler sunan birçok kütüphane sayesinde web uygulamaları geliştirmek oldukça kolaydır. 3
Node.js - Örnek Node.js üzerinde bir web sunucusu geliştirmek için aşağıdaki 5 satır kodu yazmak yeterlidir: var http = require('http'); http.createserver(function (req, res) { res.writehead(200, {'Content-Type': 'text/plain'}); res.end('hello World\n'); }).listen(1337, '127.0.0.1'); 4
Neden Gerçek Zamanlı Uygulamalarda Node.js i Tercih Edelim? Olaya dayalı ve non-blocking I/O özelliği Node.js te doğuştan olarak bulunmaktadır. Java Netty Ruby EventMachine Python - Twisted Web teknolojilerinde ve HTML 5 de yıldızı parlayan JavaScript dilinin kolaylığı ile de Node.js artık bir numaralı tercih haline gelmiştir. 5
Socket.IO nedir? Gerçek zamanlı web uygulamaları için kullanılan bir JavaScript kütüphanesidir. İstemci tarafı kütüphanesi tarayıcıda çalışır. Sunucu tarafı kütüphanesi Node.js tarafından kullanılır. Her iki taraf da birbirine benzer API ya sahiptir ve Node.js gibi olaya dayalıdır. 6
Socket.IO nedir? Öncelikle WebSockets protokolünü kullanır. Ancak gerekirse aynı arayüzü sağlarken Adobe Flash soketleri, JSONP seçimi, Uzun seçimli AJAX (AJAX Long Polling), IFrame gibi diğer yöntemlere geri dönüş sağlayabilir. Web soketleri için basit bir sargı olarak kullanılsa da, Çoklu soketlere yayın, Her istemci ile ilgili veri saklama, Asenkron I/O Odalara ayırma gibi çok daha fazla özellik sağlar. 7
Socket.IO - Örnek Sunucu Tarafı: var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); 8
Socket.IO - Örnek Istemci Tarafı: <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script> 9
Node.JS ve Socket.IO ile neler geliştirebiliriz? Sohbet Uygulamaları Multiplayer Oyunlar Anlık iletimin önemli olduğu uygulamalar; Finans Borsa Mail Uygulamaları Web Sitesi Analitikleri 10
Sonuç Web teknolojilerindeki güncel değişiklikler sayesinde, artık eklentisiz bir şekilde, gerçek zamanlı veri transferi gerçekleştirmek mümkündür. Node.JS ile gerçek zamanlı, hızlı, ölçeklenebilir web uygulamaları geliştirmek maliyet ve zaman etkin olarak gerçekleşmektedir. Socket.IO ile birçok web tarayıcısı üzerinde eklentisiz olarak sadece JavaScript kodlarıyla gerçek zamanlı veri transferini gerçekleştirmek mümkündür. 11
Kaynaklar [1] Joyent (2012). Node.js http://nodejs.org/. Son Erişim tarihi: 15 Eylül 2012. [2] Guillermo Rauch (2012). Socket.IO http://socket.io/. Son Erişim tarihi: 15 Eylül 2012. [3] Örnek Tombala Oyunu. 2012 http://bitly.com/ncxzgj 12
ANKARA TEKNOLOJİ GELİŞTİRME BÖLGESİ, BİLKENT CYBERPARK, E BLOK 5.CADDE NO: 6/A 06800, ANKARA, TURKIYE TEL : 0 312 266 35 50 FAKS : 0 312 266 35 51 www.stm.com.tr STM 2011 All Rights Reserved Bu doküman ve içerdiği tüm bilgiler STM AŞ nin fikri mülkiyetidir. Bu dokümanın dağıtımı veya sunumu ile bu haklar ortadan kalkmış olmaz. STM AŞ nin yazılı izni olmadan bu dokümanın ve içerdiği bilgilerin üçüncü kişilere aktarımı, çoğaltımı ve dağıtımı yapılamaz. Bu doküman ve içeriği hazırlanma amacının dışında kullanılamaz. This document and all information contained herein is the sole property of STM AŞ. No intellectual property rights are granted by the delivery of this document or disclosure of its content. This document shall not be reproduced or disclosed to a third party without the express written consent of STM AŞ. This document and its content shall not be used for any other purpose other than for which it is supplied. 13/37