Quantcast
Channel: IT社区推荐资讯 - ITIndex.net
Viewing all articles
Browse latest Browse all 15843

OpWeb -- 快速构建一个简单的Ajax聊天程序

$
0
0

快速构建一个简单的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 查看评论

Viewing all articles
Browse latest Browse all 15843

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>