zoukankan      html  css  js  c++  java
  • 使用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标签下建立以下代码:

        <form id="form1" runat="server">
            
    <div>
                
    <cc1:PixysoftAjaxBase ID="PixysoftAjaxBase1" runat="server"></cc1:PixysoftAjaxBase>
                
    <p>
                    
    <textarea id="message" style=" 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

        <script language="javascript" type="text/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;
    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
    <stringstring> dict = new Dictionary<stringstring>();
        
    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提供)

    技术支持

    reborn_zhang@hotmail.com

    zc22.cnblogs.com

  • 相关阅读:
    VS2010 配置驱动开发环境
    C函数调用与入栈顺序
    Ecshop后台流量分析地区分布的地名全是乱码
    使用.net程序发送邮件代码
    齐博系统出现此文件不可写:cache/label_cache/index_0_8_0_0_1_6539c.php
    UCHOME中链接前多了link.php?url=,如何去除
    discuz7.2 修改数据调用中日期格式
    php设置和获取cookie
    删除数据库所有存储过程的SQL语句
    docker搭建skywalking 8.7简明笔记 海口
  • 原文地址:https://www.cnblogs.com/zc22/p/1605058.html
Copyright © 2011-2022 走看看