node.js 小聊天室

简介:

研究了两天node.js,写了一个小小聊天室,目前只实现了简单的群聊和私聊,写的不好的地方请大家指正:)

环境:

主机xp和虚拟机linux进行的通讯

      xp:运行apache,运行客户端的php程序

   linux:node.js

1、服务器端 (app.js)

var io = require('socket.io').listen(888);
//用于记录所有的客户端
var user_coll = {};
io.sockets.on('connection', function (socket) {
//客户端连接成功则设置客户端标示
socket.on('set nickname', function (name) {
user_coll[name] = socket;
user_coll[name].set('username', name, function () { user_coll[name].emit('ready'); });
user_coll[name].on('publicmsg',function(data){
user_coll[name].get('username',function(err, name){
var msg ="public msg - "+ name + " say : "+data;
io.sockets.emit('usermsg',msg);
});
})
user_coll[name].on('privatemsg',function(data){
//console.log(JSON);return false;
var jsonData = eval(data);
user_coll[jsonData.sendTo].get('username',function(err,name){
var msg ="private msg - "+name +" say : "+jsonData.text;
user_coll[jsonData.sendTo].emit('usermsg',msg);
});

});
});

});



2、客户端(client.php) 

<?
$name = $_GET['name'];
?>
<HTML>
<HEAD>
<TITLE> room </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script src="http://10.190.19.38:888/socket.io/socket.io.js"></script>
</HEAD>

<BODY>
<script>
var socket = io.connect('http://10.190.19.38:888');

socket.on('connect', function () {
socket.emit('set nickname', '<?=$name?>');
socket.on('ready', function () {
document.getElementById('chatbox').innerHTML += "welcome into chatroom!<br>";
});
socket.on('usermsg', function (data) {
document.getElementById('chatbox').innerHTML += data+"<br>";
});
});
function sendToSer(){
var sendTo = document.getElementById('send-to').value;
var text = document.getElementById('send-content').value;
if(sendTo == ''){
socket.emit('publicmsg',text);
}else{
socket.emit('privatemsg',{'sendTo':sendTo,'text':text});
}
}

</script>
<h1>Chat Room</h1>
发送给:<input type='text' id= 'send-to'>&nbsp;内容:&nbsp;<input type='text' id= 'send-content'>
<input type='button' value='send' onclick='sendToSer()'>
<div id="chatbox" style='border:1px solid red;width :500px;height:800px' ></div>
</BODY>
</HTML>




posted @ 2012-02-11 15:39  IT大鲨鱼  阅读(1563)  评论(1编辑  收藏  举报
我的博客首页