Asp.net实现即时消息通讯(Ajax)
来源:互联网 发布:sql sever添加约束 编辑:程序博客网 时间:2024/06/06 18:51
以下是最近搞的一个用asp.net实现的即时消息的小功能,由于消息的即时性,和网络的无状态无连接。因此曾一时间无法想到很好的解决方法,很多人都说可以使用socket编程来实现使用端口进行点对点即时通信。
可是,暂时没有看到现成实现的例子。于是,我还是使用了像实现简易聊天室那样的方式,使用了一个Application对象,全局维护一个用户消息表来实现从一个客户端到服务器,再从服务器到另一个客户端信息的传递(这也是问题的关键所在,我无法实现不通过服务器,来实现点对点消息的传递,就算是通过了服务器也无法不通过Application这种共享的方式来实现信息的传递)。
主要思路和实现方式如下:发送端:查看是否在线——>发送消息(写入数据库);接收端:
收到消息提示——>查看消息——>回复(写入数据库) or 忽略——>如果有下一条,则重复以上步骤。而最重要的部分:就是接收端如何接收消息,和无论接收端停留在哪个页面上,我们都要有办法来提示用户有新消息(事实上,这是一个OA系统的附带功能,也就是说用户当时可能正在干其他事情,但要有办法让他收到消息提示)。如何接收消息,其实就是一个非常简单的方式,那就是用一个Timer控件,间隔一段时间去Application对象中轮询侦听(这和你定时去刷新的作用差不多),是否有新消息待接收。而想在每个页面上都要实现有新消息就提示,则菜用了Frame的方式,思路很简单。你肯定要在一个全局性的框架页面上去提示用户,同时侦听消息也必须是在内嵌在这个Frame的页面上进行。
好了,下面就是相关示例代码:
首先登陆过后跳转到MainForm.aspx页面(由以下几个框架构成):
其中,name为right_topFrame的Frame则是用来侦听消息的框架页,其他所有页面都是在name为rightFrame的Frame中实现,在此不再多说。 我们在Application对象中维护下面一个用户对象的数组,其中Users.cs如下:
为便于访问,我们先从数据库中取得相关用户的id,姓名等信息,在Users数组中对各个User对象进行初始化,为便于以键值对的形式访问,我们先将这个Users数组中的每个元素都存入放在一个以其ID作为key的HashTable中;这些操作都必须在应用程序刚启动时就必须完成,在整个应用程序运行期间,都必须去维护这个用户消息表,所以 Global.asax中Application_Start方法实现如下:
大致原理就是如此。
- Asp.net实现即时消息通讯(Ajax)
- asp即时消息的实现
- jQuery+ThinkPHP+Ajax实现即时消息提醒功能
- [转贴].net中即时消息发送的实现
- .net中即时消息发送的实现
- asp.net类似QQ、人人的即时消息提醒
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- .net中即时消息发送的实现……
- .net中即时消息发送的实现……
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- 在ASP.NET中实现AJAX
- 在ASP.NET中实现AJAX
- 在ASP.NET中实现AJAX
- 在ASP.NET中实现AJAX
- 在ASP.NET中实现AJAX
- 在ASP.NET中实现AJAX (转)
- VS2008 快捷键大全
- 配置.net下的Windows Mobile开发环境
- ACE_Reactor的handle_close
- c++中ertern 用法简记
- CCommand::Open的bBind参数使用方法
- Asp.net实现即时消息通讯(Ajax)
- 【原创】傅里叶分析中几个容易混淆的概念
- JavaScript字符串函数大全
- 人生的未来
- 有感而发
- Java5.0新特性
- split
- 中西方历史发展和根源
- grep egrep 的区别帮助说明一下啊这两个命令的区别,谢谢