Upload
sdu-cyberlab
View
167
Download
1
Embed Size (px)
Citation preview
SÜLEYMAN DEMİREL ÜNİVERSİTESİSİBER GÜVENLİK LABORATUVARI
Web Socket
Halil ARI
WebSocket
WebSocket
• WebSocket TCP protokolü üzerinden çift yönlü veri haberleşmesini sağlayan veri transfer kanalıdır.
• HTML5 ile birlikte gelmiştir.
WebSocket
WebSocket
• Web uygulamalarında HTTP protokolü kullanılır.• HTTP protokolü tek yönlü bir protokoldür.• Web uygulamalarının genel mantığında istemci(client) server’a request
gönderir.Server gelen request’i alır,değerlendirir istemciye response gönderir.
WebSocket
WebSocket
• HTML önceden basit yapıdaydı.Yani gelen verileri düzgün biçimde göstermek yeterliydi.
• Zamanla javascript kullanımı yaygınlaştı ve html sayfaları daha dinamik olmaya başladı.
• Javascriptin yaygınlaşmasıyla beraber ajax kullanımı da arttı.• Ajax ile sayfalarca sürüklenmeden,sayfa yeneilemeden değişiklikler yapıldı.• Ajaxın dezavantajı ise ANLIK olmaması. • Anlık değişim için javascriptin ‘setInterval()’ komutu kullanılmaya başlandı.• Yani bu komut ile site içerisinde ki içerikler verilen saniye değeri ile
güncellenebiliyor.• Basit web uygulamalarında ya da az kullanıcı web uygulamalarında bu komut işe
yarayabiliyor.• Fakat bu yöntem real-time web uygulamalarında ya da çok kullanıcı uygulamalarda
siteyi yorar.
WebSocket
WebSocket
• Bilindiği gibi server’da bir değişiklik olduğu zaman client bu değişiklikten haberi olmaz.Clientin değişiklikten haberi olması için server’a sürekli request gönderip yeni değişiklikleri alması gerekir.
• Burada devreye WebSocket girdi.• WebSocket TCP üzerinden çift yönlü haberleşmeyi sağlar.• Yani server üzerinde bir değişiklik olduğu zaman client’den request gelmesine
gerek kalmadan değişiklikleri client’a gönderir.• Sosyal platformların,real-time çok kullanıcılı uygulamaların artmasıyla beraber
WebSocket kullanımı çok fazla arttı.Ve siteyi yormadan,sayfalarca sürüklenmeden değişikliklerden istemcinin haberdar olmasını sağladı.
WebSocket
WebSocket
• Websocket teknolojisi RFC 6455 ve Websocket Javascript API’dan oluşur.• Java EE 7 ile birlikte gelen JSR 356 speği sayesinde Java’da websocket
uygulamaları geliştirilebilir.• WebSocket server client’tan connection bekler.Connection sağlandığı zaman her iki
taraf arasında veri haberleşmesi yapılabilir.
WebSocket
WebSocket
• WebSocket callback listener;1. onOpen = Connection sağlandığında çağırılır.2. onMessage = Server’a mesaj geldiği zaman çağırılır.3. onError = Server’da hata oluştuğu zaman çağırılır.4. onClose = WebSocket bağlantısı kesildiği zaman çağırılır.
WebSocket
WebSocket
JAVA KODLARI@ServerEndpoint("/ws")public class WebSocketServer { private static final Set<Session> clients = Collections.synchronizedSet(new HashSet<Session>()); @OnOpen public void onOpen(Session session) { clients.add(session); }
WebSocket
WebSocket
@OnMessage public void onMessage(String message, Session client) throws IOException, EncodeException { String Username = (String) client.getUserProperties().get("username"); if (Username == null) { client.getUserProperties().put("Username", message); String adminString = "Connected User: " + message; client.getBasicRemote().sendText(adminString); } else { Iterator<Session> iterator = clients.iterator(); while (iterator.hasNext()) { String test = Username + " : " + message; iterator.next().getBasicRemote().sendText(test); } } }
WebSocket
WebSocket
@OnClose public void onClose(Session session) { clients.remove(session); }
WebSocket
WebSocket
JAVASCRİPT KODLARI<script>
var wsUrl = "ws://localhost:8080/WebSocketExample/ws"; websocket = new WebSocket(wsUrl); websocket.onmessage = function processMessage(message) { textArea.value += message.data+ "\n"; }; function send() { websocket.send(messageText.value); messageText.value = ""; } </script>