Arkadaşlar nodede çok yeniyim. Toplu halde chat tamam da bire bir sohbet nasıl olcak bi türlü anlamadım.
Sadeleştirerek anladığım kısmı yazayım anlamadığım kısmı anlayan biri açıklarsa sevinirim.
var io = require("socket.io").listen(3000);
io.sockets.on("connection",function(socket){
socket.on("data_tip1",function(gelenbilgi){
io.sockets.emit("sokettengelen", gelenbilgi);
});
});server.js dosyamızı oluşturduk, 3000. porttan gelenleri karşıla ve sunucudaki herkese göster dedik. index.php de şöyle olsun;
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="http://localhost:3000/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect("http://localhost:3000");
socket.on("sokettengelen",function(data){
$('#xxx').append(data.isim + " : " + data.mesaj + "<hr/>");
});
$(function(){
$('#gonder').click(function(){
var isim = $('input[name=isim]:first').val();
var mesaj = $('input[name=input1]:first').val();
if( mesaj.length > 0 && isim.length > 0 ){
socket.emit("data_tip1",{mesaj:mesaj,isim:isim});
}
});
});
</script>
isim<input type="text" name="isim"/>
<br/>
mesaj<input type="text" name="input1"/>
<button type="button" id="gonder">gönder</button>
<div id="xxx"></div>index.php'de de server.js'de oluşturulan soket bağlantısıyla sayfamızı ilişkilendirdik.
(Aslında bu sayfadaki kodlar iki ayrı sayfada olcak inputlardan datayı alınca ayrı bi' php sayfasına post ettirip sonra servera yollayacağım ama mantık oturtma çalışması için sanırım bu kadarı yeterli.)
Şimdi şu haliyle "a", "b" ve "c" isimli kişiler bu sayfayı çalıştırınca üçü de aynı portu dinlemeye başladı. "a" merhaba yazınca servera bağlı olan herkez "a"nın merhaba yazdığını gördü, aynı şekilde "b" ve "c"nin yazdıklarını da.
Peki "a", sadece "b" ile konuşmak istesre nasıl olcak? Php'de bunlara özel bi konuşma alanı oluşturmanın birçok yolu var ama sonuçta ben "a" ve "b"nin konuşmalarını php'de diğer konuşmalardan ayıklayıp sokete göndersem de, soket o anda servera bağlı olan herkese konuşmayı göstercek.
Bunu nasıl engellerim yani "a" ve "b"nin kendi aralarında konuşabilmesini, aynı portu dinleyen diğer userların bundan haberdar olmamasını nasıl sağlarım.
Teşekkürler.