使用Pixysoft.Ajax技术 三步教你创建一个 WEB IM!
前言
pixysoft.ajax的介绍在:http://www.cnblogs.com/zc22/archive/2009/11/16/1603938.html
comet架构介绍在:http://www.cnblogs.com/zc22/archive/2009/11/14/1603141.html
下载地址在:http://www.boxcn.net/shared/86y259srcv
本文将介绍使用这个技术创建一个WEB IM, 而且只需要三步!
效果预览
正文
第一步 页面
首先建一个ASP.NET的网站,有一个Default.aspx页面。把PixysoftAjaxBase控件拖进来,然后在form标签下建立以下代码:
<div>
<cc1:PixysoftAjaxBase ID="PixysoftAjaxBase1" runat="server"></cc1:PixysoftAjaxBase>
<p>
<textarea id="message" style="width: 300px; height: 100px"></textarea></p>
<p>
昵称:
<input type="text" id="id" />
<input type="button" value="链接服务器" id="b1" onclick="Connect()" />
</p>
<p>
信息:
<input type="text" id="sendmessage" /></p>
<p>
接受人:
<input type="text" id="targetid" /></p>
<input type="button" value="发送信息" onclick="Send()" />
</div>
</form>
效果预览:
超级简单吧
第二步 写javascript
在head标签下完成以下javascript
function Connect()
{
Subscribe(document.getElementById('id').value);
}
function SubscribeCallback(value)
{
if(value !=null && value.length!=0)
{
document.getElementById("message").value += value;
document.getElementById("message").value += '\r\n';
}
setTimeout('Subscribe(document.getElementById(\'id\').value)',1000);
}
function Send()
{
var targetid = document.getElementById('targetid').value;
var sendmessage = document.getElementById('sendmessage').value;
SendMessage(targetid,sendmessage);
}
</script>
也是超级简单吧!
第三步 完成c#代码
后台页面完成以下代码:
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public string Subscribe(string id)
{
return MessageController.Instance.GetMessage(id);
}
public void SendMessage(string targetid, string message)
{
MessageController.Instance.SendMessage(targetid, message);
}
}
public class MessageController
{
Dictionary<string, string> dict = new Dictionary<string, string>();
private static volatile MessageController instance;
private static object syncRoot = new Object();
public static MessageController Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
instance = new MessageController();
}
}
return instance;
}
}
public void SendMessage(string id, string message)
{
if (dict.ContainsKey(id))
dict[id] = message;
else
dict.Add(id, message);
}
public string GetMessage(string id)
{
if (dict.ContainsKey(id))
{
string message = dict[id];
dict.Remove(id);
return message;
}
return null;
}
}
简单说,就是建一个MessageController的单例,保存信息。然后被页面调用。
就这么简单,这一切,使用了ajax技术、comet架构。
关键点在于:
使用settimeout函数循环调用,当然,在正式项目中,不建议使用,而是应该在服务器进行循环,具体各位大侠完成吧。
代码下载
具体下载代码文件就知道了。
http://www.boxcn.net/shared/2hz31l6uz9
(控件由boxcn.net提供)
技术支持
zc22.cnblogs.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2006-11-18 用C#完全控制Word!