【发布时间】:2014-03-04 21:14:48
【问题描述】:
我在 SignalR hub 中的代码:
public class AlertHub : Hub
{
public static readonly System.Timers.Timer _Timer = new System.Timers.Timer();
static AlertHub()
{
_Timer.Interval = 60000;
_Timer.Elapsed += TimerElapsed;
_Timer.Start();
}
static void TimerElapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//Random rnd = new Random();
//int i = rnd.Next(0,2);
Alert alert = new Alert();
i = alert.CheckForNewAlerts(EmpId);
var hub = GlobalHost.ConnectionManager.GetHubContext("AlertHub");
hub.Clients.All.Alert(i);
}
}
不知何故,我需要传递 EmpId 参数。如何做到这一点?
更多客户详情: 在我的 aspx 页面上,我有以下代码:
<script type="text/javascript">
$(function () {
var alert = $.connection.alertHub;
alert.client.Alert = function (msg) {
if (msg == 1) {
$("#HyperLink1").show();
$("#HyperLink2").hide();
}
else {
$("#HyperLink1").hide();
$("#HyperLink2").show();
}
//$("#logUl").append("<li>" + msg + "</li>");
};
$.connection.hub.start();
});
</script>
在 ASPX 页面上,我的 EmpID 位于会话对象中,我需要以某种方式在 SignalR 集线器中使用它。
【问题讨论】:
-
EmpId来自哪里? -
这是我需要通过的,但我不知道如何以及在哪里做。
-
我不确定我是否遵循。该属性是什么意思,即使您知道如何传递它,您在哪里可以访问它?它可以从其他地方暴露出来吗?您将无法在构造函数中传递任何内容,因为您不负责创建 Hub。您希望集线器拥有的任何内容要么需要已经知道,要么从其他地方提取。
-
我为你更新了答案
标签: c# signalr signalr-hub