我们目前正在为我们为Windows开发的应用程序实现一个通知功能。我们希望在用户感兴趣的操作(如文件的导入和导出等)发生时通知用户。此通知是针对每个登录用户的。
我们一直在使用ServerSentEvents,我们发现这个列表落后于一个事件。因此,在第二个操作发生之前,我们不会开始看到通知,而该通知是针对第一个操作的。在我们的dev环境中,这个问题总是会发生,但是在Azure中,它似乎像预期的那样工作(有时!)
我们使用事件队列和通道初始化器的默认实现。我们通过EventPublisher.WriteTo方法发布,传递一个主题和一个服务器事件。
这里是我们实现的主题:
public class UserNotificationsTopic : Topic
{
[RouteInput]
public Guid UserId { get; set; }
public override bool Equals(object obj)
{
return Equals(obj as UserNotificationsTopic);
}
public bool Equals(UserNotificationsTopic other)
{
if (ReferenceEquals(null, other)) return false;
return ReferenceEquals(this, other) ||
UserId.Equals(other.UserId);
}
public override int GetHashCode()
{
return UserId.GetHashCode();
}
}实现我们的ServerEvent:
public class UserNotificationServerEvent : IServerEvent
{
public string Id { get; private set; }
public string Event { get; private set; }
public int? Retry { get; set; }
public object Data { get; private set; }
public UserNotificationServerEvent(string id, string @event, object data)
{
this.Id = id;
this.Event = @event;
this.Data = data;
}
}如有任何帮助,建议将不胜感激!
谢谢
史考特
发布于 2014-02-05 14:54:41
我想我已经找到了解决办法(在我同事的大力帮助下)。
我们阅读了SignalR,发现它在Azure中也有类似的问题(后面有一个事件),建议的解决方案是将urlCompression的属性添加到Azure角色的Web.config中。
我添加了IIS7.5的默认设置:
<urlCompression doStaticCompression="true" doDynamicCompression="false"/>这似乎解决了这个问题!我不知道为什么,所以如果有人可以帮忙,请随时补充。
不管怎么说,我只是想和大家分享一下最新情况。
https://stackoverflow.com/questions/21238054
复制相似问题