Java – WebSocket Nedir, Nasıl Kullanılır ?
Java – WebSocket Nedir, Nasıl Kullanılır ?
Websocket teknolojisi RFC 6455 ve Websocket Javascript API’dan oluşur.Web client üzerinden websocket JavaScript API ile websocket serverlara bağlantı kurulabilir. Websocket server, client’tan connection’ı bekler.Client ve server arasında kurulan kalıcı bağlantı sayesinde her iki taraf birbirine data gönderebilir hale gelir.Hem server hem de istemci tarafında callback listenerlar mevcuttur. Bunlar :
- onOpen -> Connection ilk kurulduğunda çağrılır.
- onMessage -> Yeni bir mesaj geldiğinde çağrılır.
- onError -> onOpen, onClose ,onMessage ‘dan birinde hata olduğunda çağrılır.
- onClose -> Connection kapatıldığında çağrılır.
WebSocket Kullanımının daha anlaşılır olması için aşağıda basit bir örnek üzerinden açıklama yapılmıştır. Örneğin çalışması için :
kurulu olması gerekmektedir. Kurulumlar tamamlandıktan sonra tomcati başlatıyoruz.
Tomcat ve Jdk kurulumları yapıldıktan sonra sıra geldi server ve client kodlamasını yazmaya :
Java Server Side
package com.ws; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; @ServerEndpoint("/ws") public class WebSocketServer { private Session session; @OnOpen public void connect(Session session) { this.session = session; } @OnClose public void close() { this.session = null; } @OnMessage public void message(String message) { System.out.println(" Mesaj : "+message); this.session.getAsyncRemote().sendText("Alınan Mesaj :" + message); } }
Javascript Client
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Web Socket Test Page</title> </head> <body> <script type="text/javascript"> var wsUrl = "ws://localhost:8080/Websocket/ws"; var webSocket; function init() { webSocket = new WebSocket(wsUrl); webSocket.onopen = function(evt) { onOpen(event) }; webSocket.onclose = function(evt) { onClose(event) }; webSocket.onmessage = function(evt) { onMessage(event) }; webSocket.onerror = function(evt) { onError(event) }; } function onOpen(event){ Console.log("OnOpen Event"); } function onClose(event) { Console.log("OnClose Event"); } function onError(event) { Console.log("OnError Event"); } function sendMessage() { webSocket.send(textBox.value); } function onMessage(event) { alert(event.data); } window.addEventListener("load", init, false); </script> <textarea id="textBox" rows="5" cols="20"></textarea> <button onclick="sendMessage();">Send Message</button> </body> </html>
Neden WebSocket ?
HTML5 ile gelen en güzel özelliklerden, AJAX kullanmadan sunucu ile iletişime geçmemizi sağlayan WebSocket teknolojisi ile açılan tek bir bağlantı üzerinden istemcinin yeni bir istek yapmadan sunucunun istemci/istemcilere veri göndermesini sağlar.
- Gereksiz veri trafiğinden korur
- Anlık değişimler takip edilebilir
- Anlık veri akışları sağlar
- Hız ve performans yüksektir
- Çoklu platform desteği vardır