İçerikler :

Java ile Basit Bir Web Socket Örneği PrimeFaces PrimeFaces'da Resource Sırasının Ayarlanması PrimeFaces Ana Sitesi PrimeFaces DataTable ve Tablo Üzerinde Veri G.. PrimeFaces İle Basit Bir Login Sayfa Örneği PrimeFaces İle Bir Web Sayfasına Dosya Upload.. Primefaces Kurulumu PrimeFaces Mobile Kurulumu PrimeFaces Mobile Örneği PrimeFaces ve JQuery Mobile Kullanımı Primerface ve Atmosphere ile Basit Bir Web So.. Takvim Uygulamasını Türkçe Yapmak

Bu Sayfayı Paylaş:

Kavram

PrimeFaces

Tanım: Web projeleri geliştirmek için kullanılan JSF framework'ü

Kaynak

PrimeFaces Ana Sitesi

PrimeFaces JSF Framwork'ünün ana sitesi

İpucu

Primefaces Kurulumu

Primefaces framework'ünü Maven kullanarak aşağıdaki kurulabilir. Öncelikle Maven'e aşağıdakiler eklenmelidir :
<repositories>
<repository>  
	<id>prime-repo</id>  
	<name>PrimeFaces Maven Repository</name>  
	<url>http://repository.primefaces.org</url>  
	<layout>default</layout>  
</repository> 	
</repositories>
<dependencies>
<dependency>  
	<groupId>org.primefaces</groupId>  
	<artifactId>primefaces</artifactId>  
	<version>5.1</version>  
</dependency>  	
<dependency>
	<groupId>com.sun.faces</groupId>
	<artifactId>jsf-api</artifactId>
	<version>2.2.8-02</version>
</dependency>
<dependency>
	<groupId>com.sun.faces</groupId>
	<artifactId>jsf-impl</artifactId>
	<version>2.2.8-02</version>
</dependency>					
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
</dependency>    		
</dependencies>
Görüldüğü gibi primefaces için repository eklenmiştir. Primefaces kullanılması için JSF 2.2 desteği eklenmiştir. JSF 2.2 içinde java.servlet-api gerekmektedir.
Maven ile gerekli kütüphaneler tanımlandıktan sonra JSF'nin çalışması için web.xml'e aşağıdaki gibi tanım olmalıdır:
<web-app>
  	<display-name>Test Proje</display-name>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
<welcome-file-list>
	<welcome-file>index.xhtml</welcome-file>
</welcome-file-list> 
</web-app>
*.xhtml çeklinde çağrılan bir sayfada JSF framework'ü çalışacaktır.
Bu iki değişiklik ile primefaces kurulumu tamamlanmış olur. Aşağıdaki gibi bir index.xhtml adında bir test sayfası yapıp deneyebilirsiniz :
<!DOCTYPE html>
<html xmlns="http://www.w3c.org/1999/xhtml" 
xmlns:h="http://xmlns.jcp.org/jsf/html" 
xmlns:p="http://primefaces.org/ui">
 <h:head></h:head>
 <h:body>
<p:outputLabel value="Hello PrimeFaces" />
 </h:body>
</html>

Örnek

PrimeFaces İle Basit Bir Login Sayfa Örneği

PrimeFaces ile aşağıdaki gibi basit bir form yaratılabilir :

<html xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"  
    xmlns:p="http://primefaces.org/ui">  
<h:head></h:head>        
<h:body>  
	<h:form id="LoginForm">
	<p:panelGrid id="LoginPanelGrid" columns="3" style="margin:auto;margin-top:10%">
	    <f:facet name="header">Giriş Formu</f:facet>
	    <h:outputLabel for="username" value="Kullanıcı Adı: *" />  
	    <p:inputText id="username" value="#{loginBean.username}" 
	    	required="true" requiredMessage="Kullanıcı adı giriniz" label="Kullanıcı Adı" />
	    <p:message for="username" />  
	  <br/>
	    <h:outputLabel for="password" value="Şifre: *" />
	    <p:password id="password" value="#{loginBean.password}"
	    	 required="true" requiredMessage="Şifre giriniz" label="Şifre"/>
   	    <p:message for="password" />  
	  <br/>
	    <f:facet name="footer">  
	        <p:commandButton type="submit" action="#{loginBean.login()}" update="LoginForm" 
	         value="Giriş" icon="ui-icon-check" style="margin:0"/>
			<p:messages></p:messages>  
	    </f:facet>
	</p:panelGrid>
	</h:form>
</h:body>
</html>

Bu sayfa aşağıdaki gibi gözükecektir :


Eğer kullanıcı şifre girmeyi unutursa doğrulama hataları aşağıdaki gibi gözükecektir :


LoginBean sınıfı aşağıdaki gibidir :

@ManagedBean
public class LoginBean {
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String login(){
		try {
			// .. veritabaninan erismen icin UserManager nesnesi var..
			User user=userManager.select(username, password);
			if(user==null){
				FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN,
						"Kullanıcı adı veya şifre geçerli değil","");
				FacesContext.getCurrentInstance().addMessage(null, msg);
				return "";
			}
		} catch (Exception e) {
			e.printStackTrace();
			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
					"Veritabanı erişim sırasında hata alınmıştır","");
			FacesContext.getCurrentInstance().addMessage(null, msg);
			return "";
		}
		return "/Member/Main/Dashboard.xhtml";
	}	
}

Veritabanı bağlantısından kullanıcı seçilecek, eğer kullanıcı null ise (bulunmaz ise) kullanıcıya aşağıdaki gibi hata mesajı gösterilecektir :

Eğer kullanıcı adı ve şifre doğruysa /Member/Main/Dashboard.xhtml sayfasına gidilecektir


İpucu

PrimeFaces İle Bir Web Sayfasına Dosya Upload Ekleme

PrimeFaces ile file upload yapılabilir. Bunun için web.xml'e aşağıdaki gibi filter eklenmelidir :


	PrimeFaces FileUpload Filter
	org.primefaces.webapp.filter.FileUploadFilter


	PrimeFaces FileUpload Filter
	Faces Servlet

File Upload işlemi için ek olarak aşağıdaki kütüphane gereklidir :

  • commons-fileupload
  • commons-io

Bu kurulumlar yapıldıktan sonra aşağıdaki gibi kullanılabilir :


Bean kodu aşağıdaki gibidir :

private UploadedFile file;
public String submit(){ // Submit edildigi zaman cagrilir
	if(file!=null){
		OutputStream out=null;
		try {
			String path=":C\\Test"; \\Dosyanın upload edileceği klasör
			String ad="Ad" \\ Dosya için bir ad üretilecek
			File f=new File(path+File.separatorChar+ad+".jpg");
			out = new BufferedOutputStream(new FileOutputStream(f));
			out.write(file.getContents());
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(out!=null){
				out.close();
			}
		}
	}
}

submit düğmesine basıldığında UploadedFile tipindeki file nesnesi file ile ilgili bilgiyi tutatacaktır. Bu dosya için bir isim yaratılıp, belirtilen klasör içine kaydedilecektir.
PrimeFaces File Upload bileşeni kullandığınızda web projenizde türkçe karakter sıkıntısı çıkabilmektedir. Bunu çözmek için aşağıdaki gibi bir filter ekleyebilirsiniz:

@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {

	public void doFilter(ServletRequest request, 
ServletResponse response, FilterChain chain) throws 
IOException, ServletException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		chain.doFilter(request, response);
	}
	@Override
	public void destroy() {}
	@Override
	public void init(FilterConfig arg0) throws ServletException {}
	
}

İpucu

PrimeFaces Mobile Kurulumu

PrimeFaces Mobile ile Web projesi geliştirmek için aşağıdaki adımlar yapılmalıdır : 

  • JSF 2 için gerekli olan kurulum yapılmalıdır
    • jsf-api.jar ve jsf-impl.jar web projesinin lib klasörüne koyulmalıdır
    • web.xml'de aşağıdaki bölüm olmalıdır :
      
      Faces Servlet
      javax.faces.webapp.FacesServlet
      1
      
      
      Faces Servlet
      *.jsf
      
      
    • WEB-INF içinde faces-config.xml dosyası olmalıdır 
  • PrimeFace ve PrimeFaces Mobile için gerekli olan jar dosyaları indirilmeli ve web projesinin lib klasörüne koyulmalıdır. Örneğin 3.3 versiyonu için primefaces-3.3.RC1.jar ve primefaces-mobile-0.9.2.jar dosyaları lib klasörüne koyulmalıdır. http://www.primefaces.org/downloads.html adresinden indirebilirsiniz.
  • web.xml dosyasına aşağıdaki ifadeler eklenmelidir : 
    
    	Resource Servlet
    	org.primefaces.resource.ResourceServlet
    
    
    	Resource Servlet
    	/primefaces_resource/*
    
    
  • Eğer uygulamanın sadece akıllı cihaz veya table pc'ler için yapıyorsanız aşağıdakini faces-config.xml dosyasına ekleyiniz :
    
    PRIMEFACES_MOBILE
    
    

Örnek

PrimeFaces Mobile Örneği

Aşağıda basit bir PrimeFaces Mobile ile yapılan sayfa örneği görülmektedir : 

<f:view xmlns="http://www.w3.org/1999/xhtml" 
xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" 
xmlns:p="http://primefaces.org/ui" xmlns:pm="http://primefaces.org/mobile" 
contenttype="text/html">
<pm:page title="Mobile">
<pm:view id="viewA">
	<pm:header title="Baslik"></pm:header>
	<pm:content>
	<h:outputtext value="Hello Mobile PrimeFaces">
	</h:outputtext>
	</pm:content>
</pm:view></pm:page>
</f:view>

p primefaces'in genel etiketleri için , pm ise mobile'e yönelik elementler için kullanılmaktadır. Sayfa görüntülendiğinde ekranda Hello Mobile PrimeFaces yazacaktır


İpucu

PrimeFaces ve JQuery Mobile Kullanımı

JQuery Mobile'ı Java-JSF geliştirerek kullanabilirsiniz. PrimeFaces Mobile ,  JQuery alt yapısı üzerine kurulmuştur. 


İpucu

PrimeFaces DataTable ve Tablo Üzerinde Veri Güncelleme

PrimeFaces'de datatable ile veri tablo şeklinde gösterilebilir. Datatable'ın editable özelliği true yapılarak, tablo üzerinde verilerin değerleri değiştirilebilir. Aşağıda datatable sayfası gösterilmektedir:
<p:dataTable id="dt" var="_item" value="#{configurationBean.list}" editable="true">
   <p:ajax event="rowEdit" listener="#{configurationBean.onRowEdit}"/>
   <p:column headerText="Anahtar">
      #{_item.key}	       	
   </p:column>
	<p:column headerText="Değer">
     	<p:cellEditor>
	      	<f:facet name="output">
				<h:outputText value="#{_item.value}"/>
			</f:facet>
           	<f:facet name="input">
				<h:inputTextarea value="#{_item.value}" rows="10" cols="50"/>
			</f:facet>
       	</p:cellEditor>
   	</p:column> 		
	<p:column>
	   <p:rowEditor />
	</p:column>
</p:dataTable>
Yukarıdaki örnekte bir satırda iki sütun bulunmaktadır. Birinci sürun key alanıdır ve edit edilmemekte sadece gösterilmektedir. İkinci sütün ise value alanını ve edit edilecek alandır. Değer alanına bu nedenle bir p:cellEditor koyulmuştur. cellEditor içinde facet name'i output alanı veri gösterilirken , facet name'i input olan alan ise veri edit edilirken kullanılınır. Son sütunda ise rowEdit ile edit yapılmak için düğme koyulmaktadır.


Bean tarafı ise aşağıdaki gibidir:
@ManagedBean
@ViewScoped
public class ConfigurationBean implements Serializable{
	List<ConfigurationItem> list;	
	public List<ConfigurationItem> getList() throws DatabaseException{
		if(list==null){
			ConfigurationManager configurationManager=new ConfigurationManager(true);
			list=configurationManager.getConfigurationList();
		}
		return list;
	}
	public void onRowEdit(RowEditEvent event) throws DatabaseException {
		ConfigurationItem item=(ConfigurationItem)event.getObject();
		ConfigurationManager  configurationManager=new ConfigurationManager(true);
		configurationManager.update(item);
    }	
}
getList() methodu configurationitem'lardan oluşan bir listeyi döndürmektedir. ConfigurationItem key ve value değeri bulunan basit bir sınıftır. ConfigurationManager ise veritabanından veri çekmek için kullanılan bir sınıftır. onRowEdit methodu ise, tablo üzerinde bir satır düzenlenmesi tamamlandığında çağrılmaktadır. event.getObject() ile edit edilen veri alınmakta ve veritabanında update edilmektedir

İpucu

PrimeFaces'da Resource Sırasının Ayarlanması

Primefaces css, js gibi kaynakları h:head elementi içine yerleştirmektedir. Kendis css ve javascript'ini bu kaynakların önünde veya arkasında olmasını isteyebilirsiniz. Bunun aşağıdaki gibi bir kod ekleyebilirisiniz:
<h:head>
	<f:facet name="first">
		<link rel="stylesheet" href="first.css"/>
  	</f:facet>
       <!-- Diğer bilgiler -->
	<f:facet name="last">
		<link rel="stylesheet" href="last.css"/>
  	</f:facet>
</head>
Yukarıdaki first.css , primefaces'in eklediği kaynaklardan önce, last.css ise sonra eklenecektir. Bu şekilde kaynakların biçimlerin ve scriptlerin öncelikleri belirlenmiş olacaktır

İpucu

Takvim Uygulamasını Türkçe Yapmak

Primefaces'de p:calendar varsayılan olarak İngilizce'dir. Bu bileşendeki ifadeleri Türkçe'ye çevirmek için aşağıdaki gibi bir script eklenmesi yeterli olmaktadır:
<script>
    
    PrimeFaces.locales['tr'] = {
    	    closeText: 'kapat',
    	    prevText: 'geri',
    	    nextText: 'ileri',
    	    currentText: 'bugün',
    	    monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran','Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],
    	    monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz', 'Tem','Ağu','Eyl','Eki','Kas','Ara'],
    	    dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],
    	    dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
    	    dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
    	    weekHeader: 'Hf',
    	    firstDay: 1,
    	    isRTL: false,
    	    showMonthAfterYear: false,
    	    yearSuffix: '',
    	    timeOnlyTitle: 'Zaman Seçiniz',
    	    timeText: 'Zaman',
    	    hourText: 'Saat',
    	    minuteText: 'Dakika',
    	    secondText: 'Saniye',
    	    ampm: false,
    	    month: 'Ay',
    	    week: 'Hafta',
    	    day: 'Gün',
    	    allDayText : 'Tüm Gün'
    	};
    
    </script>

Örnek

Primerface ve Atmosphere ile Basit Bir Web Socket Örneği

Bu yazıda Primefaces 6.2 de Web Socket ile sunucudan istemciye socket açıp veri push nasıl edildiği basit bir örnekle gösterilecektir. Tomcat 8 kullanılacaktır. Pimefaces Web Socket kütüphanesi olan Atmosphere'i ile çalışmaktadır. Öncelikle primefaces ve CDI desteği eklemek gerekiyor. Bunun için aşağıdaki bağımlılıklar eklenmeli:
<dependencies>
	<dependency>
		<groupId>com.sun.faces</groupId>
		<artifactId>jsf-api</artifactId>
		<version>2.2.17</version>
	</dependency>
	<dependency>
		<groupId>com.sun.faces</groupId>
		<artifactId>jsf-impl</artifactId>
		<version>2.2.17</version>
	</dependency>
	<dependency>
		<groupId>org.primefaces</groupId>
		<artifactId>primefaces</artifactId>
		<version>6.2</version>
	</dependency>

	<dependency>
		<groupId>org.jboss.weld.servlet</groupId>
		<artifactId>weld-servlet-shaded</artifactId>
		<version>3.0.4.Final</version>
	</dependency>

	<dependency>
		<groupId>org.atmosphere</groupId>
		<artifactId>atmosphere-runtime</artifactId>
		<version>2.4.6</version>
	</dependency>

	<dependency>
		<groupId>org.atmosphere</groupId>
		<artifactId>atmosphere-runtime-native</artifactId>
		<version>2.4.6</version>
	</dependency>

	<dependency>
		<groupId>org.atmosphere</groupId>
		<artifactId>atmosphere-cdi</artifactId>
		<version>2.4.21</version>
	</dependency>

</dependencies>
bu şekilde JSF 2, Primefaces 6.2, CDI için Weld servlet ve atmosphere projesi için gerekli kütüphaneler eklenmiş olacaktır. CDI kurulumu için bakınız : www.fibiler.com/Tomcat-ile-CDI-Kullanimi_Ipucu_26969 Web.xml aşağıdaki gibi gerekli şeyler eklenmelidir :
<context-param>
	<param-name>primefaces.PUSH_SERVER_URL</param-name>
	<param-value>http://localhost:8080/pfpush</param-value>
</context-param>

<servlet>
	<servlet-name>Faces Servlet</servlet-name>
	<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>Faces Servlet</servlet-name>
	<url-pattern>*.jsf</url-pattern>
</servlet-mapping>

<servlet>
	<servlet-name>Push Servlet</servlet-name>
	<servlet-class>org.primefaces.push.PushServlet</servlet-class>
	<init-param>
		<param-name>org.atmosphere.cpr.broadcasterCacheClass</param-name>
		<param-value>org.atmosphere.cache.UUIDBroadcasterCache</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
	<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
	<servlet-name>Push Servlet</servlet-name>
	<url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
Öncelikle Push Servlet servlet tanımlanmıştır. Eğer local'de bir context içinde çalışıyorsa web projesi primefaces.PUSH_SERVER_URL değerinin girilmesi gereklidir. pfpush web projenizin adıdır. Bir değeri artıran bir sayfa yapalım. Bu sayfada bir düğme tıklandığında değer bir artsın ve değişiklikler tüm ilgili istemcilere gönderilsin. Sayfa aşağıdaki gibi olabilir:
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>

<h:form>
	<h:outputText value="#{counterView.count}" styleClass="display" />
	<p:commandButton value="Click" actionListener="#{counterView.increment}" />
</h:form>

<p:socket onMessage="handleMessage" channel="/counter" />

<script type="text/javascript">
	function handleMessage(data) {
		$('.display').text(data);
	}
</script>
	
</h:body>
</html>
Düğme tıklandığında counterView bean'indeki değer bir artırılmaktadır. p:socket ile bir web socket yaratılmıştır ve channel ile kanal adı /counter olarak verilmiştir. Kanala yeni veri geldiğinde handleMessage yöntemi çağrılacaktır. Bu yöntem de .display style class'lı nesnenin içeriğini değiştirecektir. CounterView bean'i aşağıdaki gibidir :
import javax.annotation.PiostConstruct;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import org.primefaces.push.EventBus;
import org.primefaces.push.EventBusFactory;

@ManagedBean
@ApplicationScoped
public class CounterView {

	private volatile int count;
	
	private EventBus eventBus;
	
	@PostConstruct
	public void init() {
		eventBus = EventBusFactory.getDefault().eventBus();
	}

	public int getCount() {
		return count;
	}

	public void setCount(int count) {
		this.count = count;
	
	}

	public void increment() {
		count++;
		
		if(eventBus!=null) {
			eventBus.publish("/counter", String.valueOf(count));	
		}
		
	}
}
Düğmeye tıklandığında increment() yöntemi çağrılacaktır. Bu yöntemde counter değerini bir artıracak ve yeni veri girildiğini publish edecektir. Bu şekilde /counter kanalına bağlanmış tüm socket'ler veriyi alacaktır. CounterResource adında bir kaynak aşağıdaki gibi yaratılmalıdır:
import org.primefaces.push.annotation.OnMessage;
import org.primefaces.push.annotation.PushEndpoint;
import org.primefaces.push.impl.JSONEncoder;

@PushEndpoint("/counter")
public class CounterResource {

	@OnMessage(encoders = { JSONEncoder.class })
	public String onMessage(String count) {
		return count;
	}

}
Bu kaynak bir mesaj geldiğinde hangi verinin socket'e yazılacağını belirtir. İkinci bir sayfa yaparak socket'in farklı sayfalarda da çalışacağını test edelim:
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>

<h:form>
	<h:outputText value="" styleClass="display" />
</h:form>

<p:socket onMessage="handleMessage" channel="/counter" />

<script type="text/javascript">
	function handleMessage(data) {
		$('.display').text(data);
	}
</script>
	
</h:body>
</html>
Bu sayfada da bir socket yaratıyoruz. Socket'e mesaj geldiğinde handleMessage çağrılıyor ve değeri gösteren bölüme yeni değer yazılıyor. counter.jsf sayfasını çalıştırınca ve düğmeye basınca değerin hem bu sayfada hem de diğer sayfada değiştiğini görebilirsiniz. Developer aracında WS sekmesi ile socket bağlantıları görülebilir.

Örnek

Java ile Basit Bir Web Socket Örneği

Bir web projesinde sunucuda Java kullanarak kolay bir şekilde websocket desteği eklenebilir. Bunun için java web socket api'si kullanılabilir. Projeye aşağıdaki gibi eklenebilir:
<dependency>
	<groupId>javax.websocket</groupId>
	<artifactId>javax.websocket-api</artifactId>
	<version>1.1</version>
	<scope>provided</scope>
</dependency>
Öncelikle içerik üreten bir endpoint eklenmelidir:
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;
	
	@OnMessage
	public void message(String message) {
		session.getAsyncRemote().sendText(message + " alindi");
	}

	@OnOpen
	public void open(Session session) {
		this.session = session;
	}

	@OnClose
	public void close() {
		this.session = null;
	}

}
/ws path'i ile kullanılabilen bir endpoint yaratılmıştır. Bir mesaj oluşturma isteği geldiğinde onu uzaktaki tüm istemcilere (web socket'i açmış) iletecektir. Aşağıdaki gibi bir sayfa yapalım. Bu sayfa hem içerik üretsin hem de içerik değiştiği zaman ekranda alert ile göstersin.
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
	
	var wsUrl = "ws://localhost:8080/javaws/ws";
	var webSocket;

	function init() {
		webSocket = new WebSocket(wsUrl);
		webSocket.onmessage = function(evt) {
			onMessage(event)
		};
	}
	
	function sendMessage() {
		webSocket.send(textInput.value);
	}

	function onMessage(event) {
		alert(event.data);
	}
	
	window.addEventListener("load", init, false);
	
</script>
</head>
<body>
	<input type="text" id="textInput"/>
	<button onclick="sendMessage();">Mesaji Gönder</button>
</body>
</body>
</html>
Düğmeye basıldığında sendMessage() yöneti çağrılır. Oda socket'e içeriği yazar. ws://localhost:8080/javaws/ws da javasw wep projesinin path'i, ws ise endpoint'î yaratırken verilen path'dir. webSocket.onmessage ile mesaj geldiğinde bir javascript olayı fırlamaktadır. Görüldüğü gibi Mesaj gönder düğmesine basıldığında alınan veri alert ile kullanıcıya gösterilmektedir. Farklı bir web sayfası yapıp, o sayfadan da socket açabilirsiniz. Aynı veri o sayfada da gösterilecektir.



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir