快速构建一个简单的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>
加入一个内容输出div
加入一个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
分别输入查看!
作者:IceSun963 发表于2013-12-23 13:45:13 原文链接
阅读:93 评论:0 查看评论