Web QQ 原理,ajax方式模拟socket编程

技术参考文档:
http://www.javaeye.com/topic/28020
http://www.pushlets.com/
http://www.meebo.com/[成功案例]
更新请在搜索引擎里查找”服务器推技术”关键字
之前有写过一篇文章,是描述如何用轮询的方式实现用ajax方式模拟socket编程的。轮询有很多缺点。服务器的负载性能是最关键的问题。之后我有想过很多办法来实现。自己实现过一个http长连接的方式做的系统。实现很复杂,我在这里就说一下怎么使用。具体的实现,这个软件包是开源的,基于C#。


软件包地址:(包括一个介绍和下载

http://sites.google.com/site/websocketwiki/
下载地址:

http://sites.google.com/site/websocketwiki/download
整个系统依赖于 JQuery 和 .NET 3.5 框架
包内有个实例程序,具体的DEMO用法参见上述的网站。
用法介绍
<script type=”text/javascript” src=”Js/jquery.js”></script>
<script type=”text/javascript” src=”Js/WebSocket.js”></script>

这两个文件可以在包内找到,请保证Server.aspx的位置可以被访问到。具体的位置可以到WebSocket.js文件里去找
var socket = new WebSocket();
1.新建一个实例

socket.Connect(strUserID);
2.以一个ID的身份连接服务器
socket.onConnect=function(){
alert(‘Already Connected’);
}

一个模拟事件机制,如果连接成功,则执行这个function里的内容
socket.onConnectError=function(error_msg){
//deal with the error message
}

出错也是这样的机制
3.接受消息
function onReveive(msg){
if(msg!=”){
alert(msg);       //deal with the messages received
}
}

onReceive 函数是独立的,必须存在的。msg参数就是接受到的消息。具体的处理用户自己实现,这里简单的判读如果是非空洞话,输出。
4,断开连接
socket.Disconnect(strUserID);
socket.onDisconnect=function(){
alert(‘Exited!’);
}

基本和连接一样,因为服务器端无法感知用户的状态,所以建议在onunload事件里手动添加disconnect
window.οnunlοad=function(){
strUserID=$(‘#txtUserID’).val()   //replace the code
socket.Disconnect(strUserID);
}

在onunload事件里写类似这样的代码,以保证系统的稳定
提供的方法:
Connect(strUserID);
Disconnect(strUserID);
ListenOn(strUserID);
CreateHapping(strUserID,strSubject);
Join(strUserID,strHappeningID);
Send(strUserID,strMsg,strHappeningID);
Exit(strUserID,strHappeningID);
SendTo(strUserID,strMsg,strSendTo);

the strUserID means the id of user
the strSubject means the happening subject
the strHappeningID means the happening ID
the strMsg means the message content
the strSendTo means the user id of the target user id

提供的事件
onConnect()
onConnectError(error_msg)
onDisconnect()
onDisconnectError(error_msg)
onCreate(data)
onCreateError()
onJoin()
onJoinError(error_msg)
onSend()
onSendError(error_msg)
onExit()
onExitError(error_msg)
onSendTo()
onSendToError()
Happening 的概念

Happening 就相当于一个频道,用户可以创建,参加或者退出。类似一个临时的“群”,以实现数据交换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值