tb_mesajlar.AppendText("\r\n");
tb_mesajlar.AppendText(isim + "=>" + mesaj);
}
void ChatIstemci_YeniKatilim(string isim)
{
tb_mesajlar.AppendText("\r\n");
tb_mesajlar.AppendText(isim+" --Katilim--->: [" +
DateTime.Now.ToString()+"]");
lst_KullaniciListesi.Items.Add(isim);
}
#endregion
#region IChatServisi Members
public void Katil(string KullaniciAdi)
{
if (YeniKatilim != null)
{
YeniKatilim(KullaniciAdi);
}
}
public void Ayril(string KullaniciAdi)
{
if (KullaniciSil != null)
{
KullaniciSil(KullaniciAdi);
}
}
void IChatServisi.MesajGonder(string KullaniciAdi,
string mesaj)
{
if (MesajGonder != null)
{
MesajGonder(KullaniciAdi, mesaj);
}
}
#endregion
private void bt_gonder_Click_1(object sender,
EventArgs e)
{
kanal.MesajGonder(this.KullaniciAd,
tb_mesaj.Text.Trim());
tb_mesaj.Clear();
tb_mesaj.Select();
tb_mesaj.Focus();
}
}
Burada öncelikli olarak "KullaniciKatildi", "KullaniciMesajGonder" ve "KullaniciAyrildi" isimli üç adet metot yaratılmış ve bu metotların türünden üç adet statik olay tanımı yapılarak "IChatKanal" ve "DuplexChannelFactory<IChatKanal>" türlerinden değişkenler tanımlanmıştır. Ardından sınıfın default constructor (yapıcı metot) tanımları yapılmıştır.
Örnekte "bt_katilim_Click" olayı incelendiğinde, "Kullanıcı Adı" için tanımlanan metin kutusuna girilen değer katılımcı olarak rol oynamaktadır. Bu yüzden"InstanceContext" örneği oluşturulduğunda, parametre olarakmetin kutusuna girilen değer alınır. Ardından "DuplexChannelFactory<IChatKanal>"sınıfından bir nesne örneği, oluşturulan "InstanceContext" nesnesi ve yapılandırma dosyasında belirtilen bitiş noktası değeri için yaratılmaktadır. Oluşturulan bu generic sınıfı sayesinde, çift yönlü iletişimi sağlayacak bir referans oluşturulmuş olunur. Ardından kullanıcıların her biri için, çift yönlü iletişimi sağlayacak kanalın oluşturulması için "CreateChannel" metodu kullanılmaktadır. Sonrasında ise oluşturulan bu kanalın "Open", "Katil", "Select" ve "Focus" metotları kullanılmıştır.
"bt_gonder_Click" olayının içerisinde ise iletişimi sağlayan kanalın "MesajGonder" metodu kullanılarak bu metoda parametre olarak mesajı gönderen kullanıcının kullanıcı adı ve gönderilen mesajın yazıldığı metin kutusundaki değeri verilir.