当前位置:  开发笔记 > 编程语言 > 正文

ASP.Net会话间事件

如何解决《ASP.Net会话间事件》经验,为你挑选了1个好方法。

我有一个网站,许多注册用户同时连接,他们可以互相发送消息.每个用户在服务器上都有自己的Session对象,在这个Session对象中我存储了"Messages"列表 - 这是用户的消息.

Session["Messages"] = new List();
//.... more code here
Session["Messages"] = BL.GetMyMessages();  //get a list of messages
//.... more code here
BL.MessageReceived += RefreshUserMessages();

public static void RefreshUserMessages(){
    //this code doesn't execute for all the sessions, but only for my current user.
}

我需要一种方法来了解用户何时收到新消息 - 我不希望每个请求都询问我的数据库.

我尝试使用BL类中的事件(当消息存储在数据库中时,会引发一个事件),但事件不会从一个会话传递到其他会话.

在我的BL课程中,我有:

public delegate void MessageReceivedEventHandler(object sender, MessageEventArgs e);
public static event MessageReceivedEventHandler MessageReceived;

public static int SaveMessageForUser(Message msg) {
    //... save the message
    if(MessageReceived != null) {
        MessageReceived (userid, msg)  // <-- correct parameters go here
    }
}

任何的想法?如何实现,在ASP.Net这样的



1> 小智..:

我建议您尝试使用SignalR来解决此问题.SignalR是用于以最小的努力构建实时聊天应用程序的完美组件.

它可以让你做你想做的一切.

查看本教程:

http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有