聊天室(js+node.js)

HTML部分:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#names{
width:120px;
}
#msgs{
width:680px;
}
</style>
</head>
<body>
<textarea name="" id="msgText" cols="120" rows="30"></textarea>
<br/>
<br/>
<input type="text" id="names">
<input type="text" id="msgs">
<button id="bn">發送</button>
<script>

var dic={};
dic=getElemId(document.body);
dic["bn"].addEventListener("click",clickHandler);
document.addEventListener("keydown",keydownHandler);
setInterval(ajax,16);

function keydownHandler(e) {
if(e.keyCode===13){
clickHandler();
}
}

function clickHandler(e) {
if(dic["names"].value.trim().length===0) return;
if(dic["msgs"].value.trim().length===0) return;
var obj={type:0,user:dic["names"].value,msg:dic["msgs"].value};
ajax(obj);
dic["msgs"].value="";
}

function ajax(data) {
if(!data)
{
data={type:1};
}
var xhr=new XMLHttpRequest();
xhr.addEventListener("readystatechange",readyHandler);
xhr.open("POST","http://10.9.164.137:3004");
xhr.send(encodeURIComponent(JSON.stringify(data)));
}

function readyHandler(e) {
if(this.readyState===4&&this.status===200)
{
var obj=JSON.parse(decodeURIComponent(this.response));
dic["msgText"].value=obj.result.join("\n");
dic["msgText"].scrollTop=dic["msgText"].scrollHeight;
}
}

function getElemId(elem) {
if(elem.id){
dic[elem.id]=elem;
}
for(var i=0;i<elem.children.length;i++)
{
getElemId(elem.children[i]);
}
return dic;
}html


</script>
</body>
</html>node

 

 

node.js服務端部分:

 

var http=require("http");
var list=[];
var server=http.createServer(function (req,res) {
var data="";
req.on("data",function (d) {
data+=d;
});
req.on("end",function () {
var obj=JSON.parse(decodeURIComponent(data));
if(obj.type===0){
list.push(obj.user+":"+obj.msg);
}
var resObj={
result:list,
error:null
};ajax

res.writeHead(200,{"Content-Type":"text/plane","Access-Control-Allow-Origin":"*"});
res.write(encodeURIComponent(JSON.stringify(resObj)));
res.end();
})
});
server.listen(3004,"10.9.164.137",function () {
console.log("服務已開啓");
});ui

 

 

效果圖:

相關文章
相關標籤/搜索