Gau*_*rav 4 javascript asp.net-mvc-3 signalr
我们正在开发一个社交网络应用程序,并将实现一些新功能.1.跟踪在线用户2.聊天(一对一聊天和以后的群聊)
我调查了SingalR,看起来很有希望.我们正在使用ASP.NET MVC 3并且正在考虑使用集线器.我的问题是,SignalR是否更好而不是简单的聊天轮询?就可扩展性而言,什么会更好?我已经看到了关于SO的其他问题,但就可伸缩性而言,无法找出哪一个更好.
第二个问题是如果我们使用SignalR,我们是否可以使用它来跟踪在线用户.我们可以定期从每个客户端调用服务器端函数来说"我在线",在hub方法中我们可以在DB中设置isOnline位.一旦客户端断开连接,我们可以取消设置.这项工作或简单的民意调查会更好吗?如果我们使用简单的轮询,我们如何将用户设置为离线?
我也使用SignalR作为一种聊天架构.完美地运行我们的单个IIS服务器设置.对于可扩展性检查:Sclaing-out-SignalR
如果您使用的集线器,您可以通过查询像连接的客户端解决了"我在网上"问题,这
var clients = Hub.GetClients<Type of your hub here>();
Run Code Online (Sandbox Code Playgroud)
并从每个客户端请求UserID.如果丢失任何连接,您必须找到数据库在线用户,这不再是集线器的客户端.
要么
另一种方法是将用户在线设置为从用户到集线器的第一条消息."嗨,我在那里".并使用此解决方案
public class MyHub : Hub, IDisconnect
{
public Task Disconnect()
{
// Query the database to find the user by it's client id.
var user = db.Users.Where(u => u.ConnectionId == Context.ConnectionId);
return Clients.disconnected(user.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
处理断开连接事件.
希望我能给你一些想法.
| 归档时间: |
|
| 查看次数: |
8249 次 |
| 最近记录: |