نقل قول: multiple private chat
هر کاربر سمت سرور یه سوکت داره که میتونیم با اون باهاش ارتباط خصوصی داشته باشیم به وسیله ی سرور...
اگر اسم همه کاربرا رو نگه داریم به راحتی میتونیم بگیم که به کدوم کاربر یه مسیج فرستاده بشه با دستور:
users[name].emit('send private message',data);
نقل قول: multiple private chat
شما اگه از socket.io استفاده کنی تمام این امکانات رو درش میبینی.
هم می تونی با استفاده از channelهای تکی چت های دو نفره درست کنی هم Broadcast کنی هم multicast
نقل قول: multiple private chat
خوب همین chanel هایی که میگید رو چطور درست کنم؟؟
این کده منه:
app.js
var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
var users1={};
var users={};
server.listen(8081);
app.get('/', function(req, res){
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function(socket){
socket.on('send message', function(data,tp){
if(tp==1){
for(user in users1){
users1[user].emit('new message',data);
}
} else{
for(user in users){
users[user].emit('new message',data);
}
}
});
socket.on('new user',function ($data,$tp,callback){
if($data){
if($tp==1){
socket.user=$data;
users1[socket.user]=socket;
var names=[];
for(name in users1){
names.push(name);
console.log(name);
}
for(user in users1){
users1[user].emit('show user',names);
}
} else{
console.log('tp=0000000000000');
socket.user=$data;
users[socket.user]=socket;
var names=[];
for(name in users){
names.push(name);
console.log(name);
}
for(user in users){
users[user].emit('show user',names);
}
}
} else {
callback(false);
socket.emit('err username');
}
});
});
----------------------
index.html:
کد HTML:
<html><head> <title>Chat with socket.io and node.js</title> <style> #chat{ height:200px; } </style></head><body> <div id='usern'></div> <div id="chat"></div> <form id="send-message"> <input size="35" id="message"></input><br> <input size="6" id="tp"></input> <input type="submit"></input> </form><br /> <form id="username"> <input size="35" id="name"></input> <input type="submit" value="username send"></input> </form><br /> <form id="username1"> <input size="35" id="name1"></input> <input type="submit" value="username1 send"></input> </form> <div id='err'> </div>
<div id='users'> <form> <input type="submit" value="120"/> </form> <a id='uname1' href="" >user1</a> <a id='uname' href="" >user2</a> </div> <script src="http://code.jquery.com/jquery-latest.min.js"></script> <script src="/socket.io/socket.io.js"></script> <script>
jQuery(function(){ alert($vsuser); var socket = io.connect(); var $messageForm = $('#send-message'); var $messageBox = $('#message'); var $chat = $('#chat'); var $username=$('#username'); var $name=$('#name'); var $username1=$('#username1'); var $name1=$('#name1'); var $usern=$('#usern'); var $err=$('#err'); var $room=$('#tp'); var $uname=$('#uname'); $('a').click(function(e){ alert('fdsafdsa'); }); $messageForm.submit(function(e){ e.preventDefault(); socket.emit('send message', $messageBox.val(),$room.val()); $messageBox.val(''); }); socket.on('new message', function(data){ $chat.append(data + "<br/>"); }); $username.submit(function (e){ e.preventDefault(); socket.emit('new user',$name.val(),0); $name.val(''); }); $username1.submit(function (e){ e.preventDefault(); socket.emit('new user',$name1.val(),1); $name1.val(''); }); socket.on('show user',function($users){ $html=''; for($i=0;$i<$users.length;$i++) { $html+=$users[$i]+' <br> '; } $usern.html($html); }); socket.on('err',function(){ $err.html('errrrrrrrrooooorrrr'); }); }); </script>
</body></html>
بخش کلاینت زیاد مهم نیست بخش سرور یا همون فایل app رو باید چکار کنم که چتهای چند نفره و دو نفره و غیره و غیره داشته باشم؟؟
الآن فقط میدونم چت روم گروهی چطوره و تو همین کدها هم 2 تا گروه دارم که مثلا جدا با هم چت میکنن ولی خیلی سخت شده بخواد همینطوری باشه کدهاش غیر قابل هضم میشه...
ممنون میشم کمک کنید که از بس دنبال این مطالب گشتم دارم میترکم واقعا...
نقل قول: multiple private chat
نقل قول: multiple private chat
نقل قول:
نوشته شده توسط
cups_of_java
ممنون ...
من خودم واسه مولتی کست و برود کست یه روش پیدا کرده بودم ولی نمیدونستم درسته یا نه چون کد نویسی زیاد میخواست واسه پیاده سازیش حالا این روش خودمو تو این مثالایی که دادین نمونه اونو دیدم فک کنم این روشه همون روش معموله که استفاده میشه حالا به نظر شما هم همینطوری:
مثلا 3 کاربر با هم و 5 نفر دیگه با هم در حال چت هستن میشن 2گروه
یه پیاده سازی معمولی بدون استفاده از دیتابیس انجام دادم این که مثلا مشخصات گروه 3نفری رو بریزیم تو یه متغیر به نام usergroup1 که یه آرایه از کاربراس و گروه 5 نفری رو هم بریزیم تو یه آرایه به اسم usergroup2 حالا وقتی مثلا یه کاربر پیامی ارسال میکنه اگه از گروه 3 نفری باشه به تمام اعضای usergroup1 پیام ارسال میشه... و همچنین برای گروه 5 نفری به صوت جداگانه و طریقه ارسال هم به این صورت:
for (user in usergroup1)
{
usergroup1[user].emit('new message',msg)
}
همین روش درسته؟؟