zoukankan      html  css  js  c++  java
  • 基于sliverlight + wcf的web 文字版IM 示例

    演示地址: http://task.24city.com/default.html

    预览界面:


    一、布局
    采用Grid布局,5行2列
    第一行:为登录/注册信息区
    第二行:左列为聊天记录区,右列为"最近联系人,我的好友,当前在线"等常见功能区
    第三行:显示当前聊天对象以及"加为好友","从好友列表中删除"二个按钮
    第四行: 打字聊天栏
    第五行:发送按钮

    二、机制
    a.采用wcf通讯,silverlight调用wcf得到返回结果和发送聊天内容,wcf与数据库交互----即silverlight以wcf为桥梁来操作数据库
    b.聊天记录的刷新采用Timer定时器,每隔5秒通过调用wcf更新
    c.在线列表利用website中的Global全局字典来实现,每登录或注销一个用户时,均通过wcf向该字典中插入或删除指定key的"记录"

    三、一些小技巧:

    a.Ctrl+回车 键发送的实现代码:

    private void txtContent_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
            {
                ModifierKeys keys = Keyboard.Modifiers;

                if (e.Key == Key.Enter && keys == ModifierKeys.Control)
                {
                    btnSend_Click(sender, e);
                }
            }

    b.TabControl中加载ListBox并附加滚动条的代码:

    ListBox _listBox = new ListBox();
    _listBox.ItemsSource = _list;
    _listBox.DisplayMemberPath = "Value";
    _listBox.MouseLeftButtonUp += new MouseButtonEventHandler(_listBox_MouseLeftButtonUp);
    ScrollViewer _viewer = new ScrollViewer();
    _viewer.Content = _listBox;
    _listBox.BorderThickness = new Thickness(0);
    this.tblItemRecently.Content = _viewer;
    _viewer.Height = pnlTab.ActualHeight - 38;

    即TabItem的Content指定为一个ScrollViewer,而这个ScrollViewer的Content再指定为ListBox,用二层嵌套实现


    c.客户端登录Ip的取得

    silverlight并不能直接取得IP地址,所以这里用website中的wcf做了中转,xap加载时就先利用wcf取回当前Ip,呵

    四、代码
    代码有点乱,也相对比较长,关键代码全部折叠贴在下面了:

    MainPage.Xaml

     

    MainPage.Xaml.cs
    数据库表结构

     本来是要把源代码放上来了,一来是因为完全是用来练手的,代码写得比较乱,二来这里面用到了公司的一些现成工具库的dll,不方便对外发布,所以只能把主要代码贴出来,其实只要弄懂了原理,大家完全可以自己从头开发一遍,说穿了就是silverlight + wcf + timer来读写数据库,没有太多的技术含量

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    golang学习笔记 ---接口
    golang学习笔记 --类与方法
    golang学习笔记--面向对象编程
    golang学习笔记---错误处理
    golang学习笔记---defer[延迟函数]
    golang学习笔记--闭包
    golang学习笔记---函数
    SSD技术扫盲之:什么是NVMe? NVMe SSD有什么特点?
    云原生存储系列文章:云原生应用的基石
    发财树的养殖方法
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1557052.html
Copyright © 2011-2022 走看看