我刚刚尝试升级到signalR 1.0.0 Alpha2。我浏览了wiki,改变了我认为需要改变的内容,并确保程序集全部加载了新文件。这里是我的JS:OnConnected任务不升级时升级到SignalR 1.0.0 alpha2
$(function() {
var Chat = $.connection.ChatHub;
...
$.connection.hub.start(
.done(function(){ alert("Now connected!"); })
.fail(function(){ alert("Could not Connect!"); });
});
这里是我的HUB类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR.Hubs;
using MyProject.Domain.Abstract;
using Microsoft.AspNet.SignalR;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Web.Security;
using MyProject.Domain.Entities;
using System.Web.Script.Serialization;
using System.Text.RegularExpressions;
using MyProject.Domain.Concrete;
using MyProject.Domain.Helpers;
using System.Web.Mvc;
namespace MyProject.Web.RealTime
{
public class ChatMessage
{
public string ChatId { get; set; }
public string Message { get; set; }
public string FullName { get; set; }
public string Time { get; set; }
public string School { get; set; }
public string Major { get; set; }
public string ImageUrl { get; set; }
}
[HubName("ChatHub")]
public class Chat : Hub
{
//Initialize Repoisotries
private IProfileRepository profileRepository;
private ISiteDataRepository siteDataRepository;
private IChatRepository chatRepository;
private IOnlineUserRepository onlineUserRepository;
private IRecentActivityRepository recentActivityRepository;
MembershipUser MainUser = Membership.GetUser();
UserProfile MainProfile;
//In memory objects
//public static Dictionary<Guid, List<string>> onlineUsers = new Dictionary<Guid, List<string>>();
//Constructor Injection for profile repository and site data repository
public Chat(IProfileRepository repo, ISiteDataRepository siteRepo, IChatRepository chatRepo, IOnlineUserRepository onlineUserRepo, IRecentActivityRepository recentActivityRepo)
{
profileRepository = repo;
siteDataRepository = siteRepo;
chatRepository = chatRepo;
onlineUserRepository = onlineUserRepo;
MainProfile = profileRepository.GetProfile((Guid)MainUser.ProviderUserKey);
recentActivityRepository = recentActivityRepo;
}
public override Task OnDisconnected()
{
disconnectUser();
List<ContactItem> contacts = profileRepository.GetFollowedOnlineContacts(MainProfile.UserId);
foreach (ContactItem ci in contacts)
{
Clients.Group(Convert.ToString(ci.ChatId)).onlineUserHandler(Convert.ToString(MainProfile.ChatId), false);
}
return base.OnDisconnected();
}
public override Task OnReconnected()
{
connectUser();
List<ContactItem> contacts = profileRepository.GetFollowedOnlineContacts(MainProfile.UserId);
foreach (ContactItem ci in contacts)
{
Clients.Group(Convert.ToString(ci.ChatId)).onlineUserHandler(Convert.ToString(ci.ChatId), true);
}
return base.OnReconnected();
}
public override Task OnConnected()
{
Debug.WriteLine("Connected``````````````````````````````````");
connectUser();
List<ContactItem> contacts = profileRepository.GetFollowedOnlineContacts(MainProfile.UserId);
foreach (ContactItem ci in contacts)
{
Clients.Group(Convert.ToString(ci.ChatId)).onlineUserHandler(Convert.ToString(MainProfile.ChatId), true);
}
return base.OnConnected();
}
private void connectUser()
{
if (onlineUserRepository.ConnectUser(MainProfile.UserId, Context.ConnectionId))
{
Groups.Add(Context.ConnectionId, Convert.ToString(MainProfile.ChatId));
}
}
private void disconnectUser()
{
onlineUserRepository.DisconnectUser(MainProfile.UserId, Context.ConnectionId);
Groups.Remove(Context.ConnectionId, Convert.ToString(MainProfile.ChatId));
}
}
}
在客户端,我得到的警告,指出IM连接,但是当我运行调试,并把一个破发点中“连接”任务,它永远不会在那里突破或在我的集线器类中运行任何东西。我可能做错了什么?
这是我的新SignalR组件:
我曾经在App_Start夹我NinjectWebCommon.cs文件来利用这一点,但自从我升级它给了我的错误,所以我注释掉,可能是问题,但还不能确定,因为signalR.ninject似乎并不奏效或者给了我一堆错误:
GlobalHost.DependencyResolver = new NinjectDependencyResolver(kernel);
GlobalHost.DependencyResolver.Register(typeof(IConnectionIdGenerator),() => new MyConnectionFactory());
RouteTable.Routes.MapHubs(new NinjectDependencyResolver(kernel));
我也得到这个问题,使用一个非常简单的例子(基本上只是OnXXXX方法,没有别的,框架的其余部分运行良好,只是这些OnXXX方法不会触发。 –
你有任何订阅?语法已更改为alpha,因此您可能根本没有订阅任何中心方法。http://weblogs.asp.net/davidfowler/archive/2012/11/11/microsoft-asp-net-signalr.aspx – davidfowl
我有没有订阅,在新版本中需要这些吗? – anthonypliu