您的位置:首页 > Web前端 > JQuery

[instant message]用asp.net+ jquery实现comet即时消息机制

2009-11-07 09:03 579 查看
效果图:

ajax

function SetParameters(p,pSplit)

{

var option={length:'200',title:'',help:'None'};

properties=p.split(pSplit);

for(i=0;i<properties.length;i++)

{

namevalue = properties[i].split(':');

if(namevalue.length >1)

{

execute ="option." + namevalue[0] +'=\''+ namevalue[1]+'\';';

eval(execute);

}

}

return option;

}

function CometClient(handler, publicToken, privateToken, onmessage, ontimeout, oncancelled, onerror)

{

this.lastMessageId = 1000;

this.publicToken = publicToken;

this.privateToken = privateToken;

this.handler = handler;

this.onmessage = onmessage;

this.ontimeout = ontimeout;

this.oncancelled = oncancelled;

this.onerror = onerror;

this.running = true;

}

CometClient.prototype.stopWaiting = function()

{

this.running = false;

}

CometClient.prototype.startWaiting = function()

{

this.running = true;

this.waitForMessages();

}

CometClient.prototype.waitForMessages = function()

{

var me = this;

$.ajax(

{

url: this.handler,

type: "POST",

data: { privateToken: this.privateToken, lastMessageId: this.lastMessageId },

success: function(response)

{

var messages =null;

if(response!=null&&response!="")

{

messages =SetParameters(response,";");

}

if (messages != null && messages.length > 0)

{

var keepWaiting = me.running;

for (var i = 0; i < 1; i++)

{

if (me.lastMessageId < messages.MessageId)

me.lastMessageId = messages.MessageId;

switch (messages.Name.toLowerCase())

{

case "timedout":

me.ontimeout();

break;

case "cancelled":

keepWaiting = false;

me.oncancelled();

break;

case "message":

me.onmessage(messages);

break;

}

}

if (keepWaiting)

me.waitForMessages();

}

},

error: function()

{

me.onerror();

}

});

}

下载演示代码

下载实现长连接的代码COMET.DLL

另外另一种实现方法 实现

FluorineFx + Flex 实现 效果如下。

http://ftp-woody.d134.6266668.cn/chat2.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: