基于NodeJS+Socket的聊天室
浏览量:500 | 分类:Node.js | 发布日期:2012-02-12
基于NodeJS+Socket的聊天室 NodeJS服务端代码
var http = require('http'),
io = require('socket.io'),
fs = require('fs');
//配置
var config = {
port : 8888
}
http = http.createServer(handler);
http.listen(config.port);
io = io.listen(http);
function handler(req, res) {
fs.readFile(__dirname+'/client.html',
function(err, data){
req.setEncoding(encoding="utf8");
res.writeHead(200);
res.end(data);
});
}
//'connection' 是socket.io 保留的,不能错哦
io.sockets.on('connection',function(socket){
//'msg'是我们自定义的,客户端听取的时候要指定同样的事件名
socket.emit('msg',{hi:'Happy new year.'});
//'msg'需要和客户端发送时定义的事件名相同
socket.on('msg',function(data){
console.log('Get a msg from client ...');
console.log(data);
socket.broadcast.emit('user message',data);
});
});
客户端代码
<!DOCTYPE html>
<html>
<head>
<title> 聊天室 </title>
<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect('http://localhost:8888');
socket.on('user message',function(msg){
msgbox(msg.msg);
});
function sendMsg(){
var inpt = document.getElementById('txtInput');
var str = inpt.value;
msgbox(str);
//发送
socket.emit('msg',{msg:str});
console.log('[client]' + str);
inpt.value = "";
inpt.focus();
}
function msgbox(str){
var box = document.getElementById('box');
box.innerHTML += '<b>访客说</b>:'+str + '<br<-----<br>';
}
</script>
<style type="text/css">
#box {
overflow: auto;
width:500px;height:300px;border:1px solid #dcdcdc;
}
#txtInput {
width:430px;
}
</style>
</head>
<body>
<h2>聊天室</h2>
<div id='box' ></div>
<input type='text' id='txtInput' ><input type='button' value='发送' onclick='sendMsg();'>
</body>
</html>
下载地址
上一篇: MongoDB无法启动终极解决办法
下一篇: jQuery事件绑定子元素继承问题