快速构建一个简单的Ajax聊天程序:
下载OpWeb框架:https://github.com/icesun963/OpWeb
在Service/Demos/目录下创建一个目录叫:cometChat
新建一个服务端脚本:chatService.js
var myApp = function(){ //对应的映射根对象 var chatDb=function(){ this.lists = []; JsOpItem.call(this); }; //子消息对象 var messageItem=function(message){ this.message=message; JsOpItem.call(this); }; //定义一个实体对象 var chatroot= new chatDb(); //同客户端绑定根节点 chatroot.SetOpId("2000"); //绑定到Master允许客户端同步 OpLog.OpFunction.SetMaster(chatroot); //定义请求方法 this.RPCAddChatMessage =function (message){ //添加到列表 chatroot.lists.push(new messageItem(message)); }; };
//创建一个Comet Web服务 AddService(function () { CometServer(__dirname + "/",8008); }); //把服务加入启动 AddService(myApp);
服务端结束!
新建一个index.html
加入脚本引用:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="/_comet.io/comet.io.client.js"></script> <script src="watch.js" type="text/javascript"></script>
加入一个input text;
<p> <input type="text" name="word" id="word" value="" /> </p> <div id="content"> </div>
添加对象定义以及触发事件脚本:
//定义对象 var chatList = function(){ var self = this; //定义消息列表 this.lists= []; //监听事件 watch(this,"lists",function(prop,action,newval,oldval){ if(action == "push" ) { //当发现lists添加一条消息时,在界面上添加一条message显示 $('#content').append('<div>' + newval[0].message + '</div>'); } }) };
定义就完了,我们需要new 一个实体并且绑定服务端数据. 以及相应input操作:
//新建一个对象 var chatRoot = new chatList(); //绑定到一个推送session var session1=new opSession(chatRoot,"2000","http://localhost:8008"); //当用户在Input上输入回车时,发送一个添加请求 $('#word').bind('keydown',function (e) { var key = e.which; if (key == 13) { session1.doRpcCall("RPCAddChatMessage",[ $('#word').val() ]); } });
测试,运行!!,
你可以打开2个
http://localhost:8008
分别输入查看!
原文链接:https://www.f2er.com/ajax/165412.html